Ruby on rails 从Rails窗体获取数组
我需要为Ruby on rails 从Rails窗体获取数组,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我需要为帐户资源设计一个表单。在这种形式下,我需要在名为relationships的属性中的params散列中收集一些id作为数组 因此POST请求的最后一个参数[account]散列应该如下所示: {:name => 'somename', :relationships => ["123", "23", "23445"]} 如何为字段设计表单_?我试过了,但没有成功: <%= form_for @account do |f| %> <%= f.text_
帐户
资源设计一个表单。在这种形式下,我需要在名为relationships
的属性中的params
散列中收集一些id作为数组
因此POST请求的最后一个参数[account]
散列应该如下所示:
{:name => 'somename', :relationships => ["123", "23", "23445"]}
如何为字段设计表单_?我试过了,但没有成功:
<%= form_for @account do |f| %>
<%= f.text_field :name %>
<% @eligible_parents.each do |p| %>
<%= f.check_box "relationships", nil, :value => p.id %>
<b><%= p.name %></b><br/>
</span>
<% end %>
<%= f.submit "Submit" %>
<% end %>
p、 id%>
@qualified_parents
中的元素数量每次都不同
关系
在账户
模型中既不是关联,也不是属性
我必须使用虚拟属性,但我需要填写表单中的数组
请帮忙。我该怎么做 您仍然需要视图中的字段,只需使用:relationships
作为记录名称
,然后提供一个对象
<%= form_for @account do |f| %>
<%= f.text_field :name %>
<% fields_for :relationships, @eligible_parents do |p| %>
<%= p.check_box "relationships", nil, :value => p.object.id %>
<b><%= p.object.name %></b><br/>
<% end %>
<%= f.submit "Submit" %>
<% end %>
p、 object.id%>
此处的文档:如果要发送值数组,只需在名称属性中使用[]。在您的情况下,只需使用[]
<%= f.check_box "relationships", {}, :value => p.id, :name => "relationships[]" %>
p.id,:name=>“relationships[]”%>
我发现这是最干净的方式
如果您正在处理直线数据,并且希望在不使用任何这些@objects的情况下发回数组:
<%= form_for :team do |t| %>
<%= t.fields_for 'people[]', [] do |p| %>
First Name: <%= p.text_field :first_name %>
Last Name: <%= p.text_field :last_name %>
<% end %>
<% end %>
在具有嵌套属性的复杂表单中,可以使用f.object\u name辅助对象。但是在进行插值时要注意语法。这是正确的:
"#{f.object_name}[relationships][]"
这是不正确的:
"#{f.object_name}[relationships[]]"
我总是被它绊倒。我也在做类似的工作。我的问题是如何将输入名称传递给partial,以使用railsform\u for
helper将其解析为散列
所以,我的解决方案是这样的:
"team" => {
"people" => [
{"first_name" => "Michael", "last_name" => "Jordan"},
{"first_name" => "Steve", "last_name" => "Jobs"},
{"first_name" => "Barack", "last_name" => "Obama"}
]
}
=render'my\u partial',form:form,name:“item\u id[item.id]”
因此,这将呈现如下html:
"team" => {
"people" => [
{"first_name" => "Michael", "last_name" => "Jordan"},
{"first_name" => "Steve", "last_name" => "Jobs"},
{"first_name" => "Barack", "last_name" => "Obama"}
]
}
数字1
是item.id
,这是HTML理解传递数组或散列的方式,这一切都取决于您的配置
那么,这些情人会是这样的:
"team" => {
"people" => [
{"first_name" => "Michael", "last_name" => "Jordan"},
{"first_name" => "Steve", "last_name" => "Jobs"},
{"first_name" => "Barack", "last_name" => "Obama"}
]
}
“items\u id”=>{“1”=>“1”}
这对我来说是一个form\u object+virtus
可能的答案/重复:有点不同,但我认为基本技术是一样的。谢谢!我在哪里可以了解更多关于这些的信息!rails指南和流行书籍都没有提到这种特殊用法。我在试图解决我的一个问题时发现了这一点,我最终查看了文档和,我最终找到了这样的小宝石。nil的未定义方法“merge”:NilClassip\u address
是我的模型ipresource的属性,它是我以前的代码。。在将其移植到与您的答案类似的格式后,我发现上面的未定义方法“merge”为nil:NilClass
错误。让我们尝试使用一组非活动记录模型来执行此操作,但它不断询问“id”,并给我“undefined methodid
”@dtc您可能正在执行一个.id,它应该是['id']如果您使用的是非活动记录模型