我只学习 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
(&C。)
我的 SpecialUser 模型看起来像这样:
class SpecialUser < ActiveRecord::Base
belongs_to :user
(&C。)
我们正在使用https://github.com/bernat/best_in_place创建一个表单来编辑 SpecialUser 的信息。以前,我们为 SpecialUser 提供了一个单独的“地址”属性,但最近取消了它以支持指定完整地址(地址_1、地址_2、城市、州、邮编...)并将其放入用户中,以便普通用户可以也有地址。:)
但是,当我尝试这样做时:
<% # 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>
我也尝试用 and 替换@super_user.user
,User.find(@super_user.user)
但User.find(@super_user.user_id)
我得到了完全相同的错误。
当我做
<%= @super_user.user.address_1 %>
有用!
在阅读了 best_in_place 的东西后,我仍然无法找到我的答案。:( 不确定这是我们使用的宝石的限制还是我遗漏了一些东西。