Доступ к атрибутам best_in_place и модели (нуб?)

Я изучаю Rails всего ~ месяц, поэтому я не уверен, действительно ли ответ здесь простой или более сложный.

У меня есть две модели, назовем их «SpecialUser» и «User».

Моя модель пользователя выглядит примерно так:

class User < ActiveRecord::Base
has_one :special_user
attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :roles, :user_type, :address_1, :address_2, :city, :state, :zip

(и т. д.)

И моя модель SpecialUser выглядит примерно так:

class SpecialUser < ActiveRecord::Base
belongs_to :user

(и т. д.)

Мы используем https://github.com/bernat/best_in_place, чтобы создать форму для редактирования информации для Специальный пользователь. Раньше у нас был отдельный атрибут «адрес» для SpecialUser, но недавно мы убрали его в пользу указания полного адреса (address_1, address_2, city, state, zip...) и помещения его в пользователя, чтобы обычные пользователи могли тоже есть адреса. :)

Однако, когда я пытаюсь сделать это:

<% # best_in_place_if can?(:edit, @super_user), @super_user.user, :address_1 %>

Я получаю эту ошибку:

NoMethodError in Project_professionals#show

undefined method `user_path' for #<#<Class:0x0000013457fb90>:0x00000132e1fdd8>

Я также пытался заменить @super_user.user на User.find(@super_user.user) и User.find(@super_user.user_id), но получаю точно такую ​​же ошибку.

Когда я делаю

<%= @super_user.user.address_1 %>

Оно работает!

Прочитав материал best_in_place, я все еще не могу найти ответ. :( Не уверен, что это ограничение драгоценного камня, который мы используем, или я что-то упустил.


person melissanoelle    schedule 01.05.2012    source источник


Ответы (1)


best_in_place должен справиться с этим — без ограничений

Посмотрите, исправит ли это это

:path: URL-адрес, на который будет отправлено действие обновления. Если он не определен, по умолчанию используется путь :object.

<%= best_in_place_if can?(:edit, @super_user), @super_user.user, :address_1, :path => super_user_user_path %>
person Hitham S. AlQadheeb    schedule 01.05.2012
comment
Великолепно! Большое спасибо! :) На самом деле мне пришлось использовать только super_user_path вместо super_user_user_path, так как последнего не существовало. Погуглил и обнаружил, что обычный путь работает нормально. :) РЕДАКТИРОВАТЬ: Итак, я сказал слишком рано.... он будет отображать данные из БД, и когда я нажимаю, чтобы отредактировать их, журнал консоли выдает эту ошибку: Uncaught SyntaxError: Unexpected token <. Я собираюсь продолжать дурачиться с этим, но можете ли вы придумать что-нибудь, что заставит вас забыть об этом? :) - person melissanoelle; 01.05.2012
comment
в итоге отказался от этого и переместил данные адреса в таблицу super_user и из пользовательской таблицы. - person melissanoelle; 02.05.2012