如何解决如何从散列数组中创建一个简单的表单选择输入
我正在使用简单的表单 gem,但很难为对象的属性创建选择输入和选项。最终结果应该是这样的:
<select name="sales_invoice[flooring_company_name]" id="sales_invoice_flooring_company_name">
<option value=""></option>
<option value="XL Funding">XL Funding - 11111111</option>
<option value="AFC">AFC - xxxxx</option>
<option value="Ally">Ally -</option>
</select>
在我的控制器中,我有:
@payment_preferences = [{:name=>"XL Funding",:account_number=>"11111111"},{:name=>"AFC",:account_number=>"xxxxx"},{:name=>"Ally",:account_number=>""}]
在我的 html.erb 中,我尝试过:
<%= f.input :flooring_company_name,label: false,collection: @payment_preferences,:label_method => :name,:value_method => :name,include_blank: true %>
导致错误:NoMethodError - “XL FUNDING”的未定义方法`name':字符串
所以我尝试了:
<%= f.input :flooring_company_name,:label_method => :first,:value_method => :first,include_blank: true %>
结果:
<select name="sales_invoice[flooring_company_name]" id="sales_invoice_flooring_company_name">
<option value=""></option>
<option value="[:name,"XL Funding"]">[:name,"XL Funding"]</option>
<option value="[:name,"AFC"]">[:name,"AFC"]</option>
<option value="[:name,"Ally"]">[:name,"Ally"]</option>
</select>
解决方法
simple_form gem 页面中的建议是使用 [value:String,name:String] 的集合,所以我想一个解决方案是将您的 @payment_preferences 更改为:
@payment_preferences = [
["XL Funding","XL Funding - 11111111"],["AFC","AFC - xxxxx"],["Ally","Ally - "]
];
如果你真的想通过你使用的方式,你使用的两种方法似乎都是 lambda,这有点过度设计,但你可以使用 lambda,请在此处查看 https://stackoverflow.com/a/6334645/4507525
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。