我有一个form_tag
,它将代码作为输入:
= form_tag({controller: "charges", action: "new"}, method: "get") do
= label_tag(:code, "Check code:")
= text_field_tag(:code)
= hidden_field :item, value: @item.id
= submit_tag("Search")
我想要一个隐藏字段,为URL添加一定的值。我基本上想要创建URL example.com/charges/new?item=1&code=mycode
,其中'1'是项ID,'mycode'是用户输入的代码,但我无法使其工作。
答案 0 :(得分:3)
hidden_field
和hidden_field_tag
不一样。你想要后者。 hidden_field
的工作方式与text_field
类似,因此需要一个对象(通常位于form_for
内)。与hidden_field_tag
一样,text_field_tag
没有。这是Rails中非常常见的“问题”。
试试这个:
= hidden_field_tag "item", @item.id
P.S。如果此表单用于创建新的模型对象(从您的代码我猜测它是用于创建Charge对象),您可能希望使用form_for
。像这样:
= form_for :charge do |f|
= f.label :code, "Check code:"
= f.text_field :code
= f.hidden_field :item_id, @item.id
= f.submit "Search"
这可能会大大简化您的控制器,因为在您的create
操作中,您可以Charge.create(params)
。我只是猜测你的实际模型是什么样子,但它应该给你正确的想法。您应该通读form_for
docs了解更多信息。