best_in_place&模型属性访问(noob?)

时间:2012-05-01 18:48:54

标签: nested-attributes ruby-on-rails-3.2 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

(&安培; c)中

我的SpecialUser模型看起来像这样:

class SpecialUser < ActiveRecord::Base
belongs_to :user

(&安培; c)中

我们正在使用https://github.com/bernat/best_in_place创建一个表单来编辑SpecialUser的信息。以前,我们为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.userUser.find(@super_user.user)替换User.find(@super_user.user_id),但我得到了完全相同的错误。

当我这样做时

<%= @super_user.user.address_1 %>

有效!

在阅读了best_in_place之后,我仍然无法找到答案。 :(不确定这是我们正在使用的宝石的限制还是我错过了什么。

1 个答案:

答案 0 :(得分:0)

best_in_place应该处理它 - 没有限制

看看这是否修复了它

  

:path:将更新操作发送到的URL。如果没有定义   它默认为:object path。

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