Ruby on rails Rails 4,显示属性

Ruby on rails Rails 4,显示属性,ruby-on-rails,form-for,Ruby On Rails,Form For,如果我想提交嵌套资源的字段而不是父资源。我该怎么做 我有两个模型:产品和产品细节 =form_for @product do |f| =f.fields_for product_details do |ff| =ff.radio_button :price, ff.price =f.submit 因此,我需要将上述表格提交给product_details_controller,而不是products_controller 如果我做了表单产品详细信息,我会得到一些像“to\u k

如果我想提交嵌套资源的字段而不是父资源。我该怎么做

我有两个模型:产品和产品细节

=form_for @product do |f|
  =f.fields_for product_details do |ff|
    =ff.radio_button :price, ff.price
  =f.submit
因此,我需要将上述表格提交给product_details_controller,而不是products_controller

如果我做了表单产品详细信息,我会得到一些像“to\u key”这样的未定义的东西

最好的方法是什么?

可以帮助您

例如:-

class Project < ActiveRecord::Base
  has_many :tasks
  accept_nested_attributes_for :tasks, :allow_destroy => true
end
class项目true
终止
视图中的

<% form_for @project do |project_form| %>
  <% project_form.fields_for :tasks do |task_form| %>
      <p>
        <div>
          <%= task_form.label :name, 'Task:' %>
          <%= task_form.text_field :name %>
        </div>
     </p>
   <%end%>
<%= project_form.submit %>
<% end %>


so@project.save也将保存子任务。此外,您还可以修改控制器代码,并按照自己的方式执行操作

在rails控制台上试用它

>> project = Project.first
=> #<Project id: 1, name: "Nested models patches", created_at: "2009-01-22 11:17:15", updated_at: "2009-01-22 11:17:15", author_id: 1>
>> project.tasks
=> [#<Task id: 1, project_id: 1, name: "Write 'em", due_at: nil, created_at: "2009-01-22 11:17:15", updated_at: "2009-01-22 11:17:15">,
#<Task id: 2, project_id: 1, name: "Test 'em", due_at: nil, created_at: "2009-01-22 11:17:15", updated_at: "2009-01-22 11:17:15">,
#<Task id: 3, project_id: 1, name: "Create demo app", due_at: nil, created_at: "2009-01-22 11:17:15", updated_at: "2009-01-22 11:17:15">,
#<Task id: 4, project_id: 1, name: "Scrutinize", due_at: nil, created_at: "2009-01-22 11:17:15", updated_at: "2009-01-22 11:17:15">]

>> project.tasks.second.name = "" 
=> "" 

>> project.valid?
=> false
>project=project.first
=> #
>>项目.任务
=> [#,
#,
#,
#]
>>project.tasks.second.name=“”
=> "" 
>>项目有效吗?
=>错误