Ruby on rails 用于在Rails 3中使用多态关联的形式_中的未定义方法
让我解释一下我想做什么,然后问我的问题。我对Ruby/Rails完全是个新手,但却是一个经验丰富的开发人员 我想要什么:我想要开发人员、客户和管理员。我想要一个通用的身份验证机制 什么似乎是最好的:我认为最好的建模方式是让一个用户处理身份验证,然后是某种继承或扩展每个用户类型的功能 我在尝试什么:我在尝试一种叫做多态关联()的东西,但我错过了一些东西。现在,如果我转到Ruby on rails 用于在Rails 3中使用多态关联的形式_中的未定义方法,ruby-on-rails,ruby-on-rails-3,polymorphic-associations,Ruby On Rails,Ruby On Rails 3,Polymorphic Associations,让我解释一下我想做什么,然后问我的问题。我对Ruby/Rails完全是个新手,但却是一个经验丰富的开发人员 我想要什么:我想要开发人员、客户和管理员。我想要一个通用的身份验证机制 什么似乎是最好的:我认为最好的建模方式是让一个用户处理身份验证,然后是某种继承或扩展每个用户类型的功能 我在尝试什么:我在尝试一种叫做多态关联()的东西,但我错过了一些东西。现在,如果我转到/developers/new,我会得到以下信息 in developers/_fields.html.erb where lin
/developers/new
,我会得到以下信息
in developers/_fields.html.erb where line #4 raised:
undefined method `name' for #<Developer:0x00000002bafd18>
开发人员#新建控制器代码段
def new
@developer = Developer.new
@developer.user = User.new
end
new.html.erb开发者代码片段
<div class="row">
<div class="span6 offset3">
<%= form_for (@developer) do |f| %>
<%= render 'fields', f: f %>
<%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
<% end %>
</div>
</div>
最后
\u fields.html.erb代码段
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation, :profile_id, :profile_type
has_secure_password
belongs_to :profile, :polymorphic => true
...
end
class Developer < ActiveRecord::Base
attr_accessible :skype_name
has_one :user, :as => :profile, :dependent => :destroy
accepts_nested_attributes_for :user
end
resources :developers
<%= render 'shared/error_messages' %>
<%= f.label :name %>
<%= f.text_field :name %>
...
...
我发现的最接近的问题是,我尝试了他们的答案中的一些东西,但都没有帮助
我可以创建一个新的用户和开发人员,通过rails控制台彼此链接,但我不知道我在web上做错了什么
任何帮助都将不胜感激。您正在尝试访问
开发人员
父项范围内的用户
属性。使用的字段\u修改范围:
<%= render 'shared/error_messages' %>
<%= f.fields_for :user do |u| %>
<%= u.label :name %>
<%= u.text_field :name %>
<% end %>
您可能还希望开发人员模型接受用户的嵌套属性。请看一些示例。错误发生在哪个文件中?developers/\u fields.html.erb我也会编辑这个问题。感谢您指出这一点。可能不是这样,但表单似乎假设开发人员有名称,但用户是有名称的人。有没有办法把
?或者表单应该是@user的,因为它似乎是更广泛的对象?我刚刚掌握了这些ruby on rails表单的诀窍,所以我对这里的建议犹豫不决。该死的,我应该有信心发布一个答案!很高兴知道我走对了路!我把这个问题留着以后参考。谢谢!它仍然坏了,但因为现在的身份验证检查。我遇到的问题已经解决了。