【发布时间】:2017-05-01 14:02:00
【问题描述】:
这就是我想要做的:
= form_tag(path) do
- @items.each do |i|
= fields_for "i[]", i do
%input.content{:name => "content", :type => "hidden"}
= submit_tag "Submit"
如您所见,我尝试将所有 .content 输入的值从 items 传递到路径。
这些是我得到的参数:
{"utf8"=>"✓", "content"=>"", "commit"=>"Submit"}
我希望是这样的:
{"items": [
{
"id":1,
"content":""
},
{
"id":2,
"content":""
},
{
"id":3,
"content":""
},
] }
如何在 Rails 中创建这些 POST 请求?
【问题讨论】:
-
fields_for "i[]"fields_for倾向于期望实际的 Active Record 类型(例如fields_for @user- 不是作为字段名称的字符串。这是关于此的 api dock(它有示例): apidock.com/rails/ActionView/Helpers/FormHelper/fields_for -
我尝试过类似
= simple_form_for @items, :url => path do |f| %input.content{:name => "content", :type => "hidden"} = submit_tag "Submit"的操作,但现在我收到@items的undefined methodto_key'` 错误 -
简单点怎么样:
- @items.each do |i|hidden_field_tag :value => "items[#{i.id}]", i.contentend -
嗯,它抱怨
i.content是一个语法错误。我没有找到传递第二个值的机会。 -
这是一个愚蠢的解决方案:
- @snippets.each do |s| = hidden_field_tag :value => s.id.to_s + "-dfgdfgbdxfgbfgnbcfgngfncfgnghnghng"?
标签: ruby-on-rails json ruby post ruby-on-rails-5