【发布时间】:2011-07-27 00:48:36
【问题描述】:
- 我有一个模型“问题”和一个嵌套模型“关系”
-
在我提到的 issue.rb 中:
has_many :relationships, :dependent => :destroy accepts_nested_attributes_for :relationships, :allow_destroy => true -
在relationship.rb中我提到过:
belongs_to :issue -
在 Ryan Bates Railcast#196 之后,我的问题控制器中有以下内容:
relationship = @issue.relationships.build
但是,我遇到错误“未知属性:关系”
我在这里做错了吗?我确实在日志中看到将关系属性传递给服务器,但是这个错误不会让创建成功。
我在 Rails 方面的专业知识是初学者水平,所以如果我提出一个可能被认为微不足道的问题,请见谅。
感谢您的帮助。
编辑:相关控制器代码:
@relationship = @issue.relationships.build
#@relationship = Relationship.new(params[:relationship])
if @relationship.issue_id = ''
@relationship.issue_id = @issueid
end
if @relationship.cause_id = ''
@relationship.cause_id = @issueid
end
@relationship.save
redirect_to(:back, :notice => 'New Relationship was created')
我在跟踪中看到的:
ActiveRecord::UnknownAttributeError in IssuesController#create
unknown attribute: relationship
在问题参数中,我看到关系参数按预期传递:
"relationship"=>{"issue_id"=>"100",
"cause_id"=>""}
另一个更新 发布 form_for 代码:
- form_for Issue.new do |f|
.field
= f.text_field :description, :class=>"formfield", :id=>"frm_descr"
.field
= f.hidden_field :wiki_url, :class=>"formfield", :id=>"frm_wiki_url"
.field
= f.hidden_field :short_url, :class=>"formfield", :id=>"frm_img_url"
.field
= f.hidden_field :title, :class=>"formfield", :id=>"frm_title"
= f.fields_for :relationship do |builder|
= builder.text_field :issue_id, :class=>"form_field", :id=>"frm_rel_issue_id", :value=>@issue.id
= builder.text_field :cause_id, :class=>"form_field", :id=>"frm_rel_cause_id"
.actions
= f.submit 'Create', :class=>"save_button", :name=>"save_issue_rel_button", :id=>"val_collector"
【问题讨论】:
-
请添加您的完整控制器操作,并可能提供堆栈跟踪以显示错误发生的位置。
-
@Thilo:编辑问题以包括相关的控制器代码和跟踪。
-
应该传递给您的 IssuesController#create 方法的不是“relationship”,而是“relationship_attributes”哈希。您是否使用 fields_for 作为截屏节目?
-
@Thilo:刚刚发布了另一个 EDIT 以包含我正在使用的 Form_for 代码。
-
@Ryan:rails 文档还指出嵌套属性的参数应该作为属性哈希传递给服务器,即在这种情况下,relationship_attributes => { :blah => 'blah' }。我们看到这没有发生。我该如何更正它以作为属性哈希传递?
标签: ruby-on-rails ruby-on-rails-3 nested-forms railscasts