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=“”
=> ""
>>项目有效吗?
=>错误