如何从嵌套表单中正确创建嵌套属性项?

时间:2012-07-27 15:38:39

标签: ruby-on-rails ruby-on-rails-3 nested-forms nested-attributes

与此railscast类似,我正在尝试为嵌套属性创建表单。在我的应用程序中,节点可以附加问题。我希望一个表单能够为节点和问题设置属性。这在模型中定义:

node.rb

...
has_many :questions
accepts_nested_attributes_for :questions

我不确定如何创建接受问题的表单。目前就是这样:

 <%= f.fields_for @node.questions do |builder| %>
  <%= render 'question_form', f: builder %>    
  <% end %>

然后,问题表单会显示相关字段。

节点控制器当前依赖于正确传递的属性: nodes_controller.rb

def new
@node = current_user.nodes.build 
//also tried building a question

def create
@node = current_user.nodes.new(params[:node])
@node.save... 
//anything else needed? 

如何让表单成功创建问题?

1 个答案:

答案 0 :(得分:0)

@node = current_user.nodes.new(params[:node])

应该是

@node = current_user.nodes.create(params[:node])

假设current_user变量已初始化,并且您已使用attr_accessible将所有从表单保存的属性标记为“mass assignable”,它应该可以正常工作

请注意,new方法只创建一个对象而不将其保存到数据库中。 create将其保存到数据库。