【问题标题】:Simple hidden field in non-model form非模型形式的简单隐藏字段
【发布时间】:2010-02-08 09:34:49
【问题描述】:

在 Ruby-on-Rails 中创建几个具有已知值和相同名称的简单隐藏字段的最简单方法是什么? )?

“简单隐藏字段”是指名称只是一个字符串 (field_name) 而不是数组的一部分 (field_name[]) 的名称,因此可以简单地从参数哈希中读取该值作为params[:field_name] 而不是params[:field_name][0]

我发现了

<% form_remote_tag :url => {:action => "do_act"} do %>
  <%= hidden_field :field_name, 0, :name => "field_name", :value => "foo" %>
  <%= submit_tag "Submit" %>
<% end %>

产生一个可接受的元素 (&lt;input id="field_name_0" name="field_name" type="hidden" value="foo" /&gt;),但如果我省略了 :name 参数,则渲染字段的名称为 field_name[0]。省略 0 显然会导致非常奇怪的行为。

&lt;%= hidden_field_tag :field_name, "foo" %&gt; 如果只有一个这样的表单,则生成可接受的元素,但如果有多个表单,则会生成 HTML 警告(重复 ID)。

有没有办法在更少的参数中做到这一点(除非定义一个助手)?

【问题讨论】:

    标签: ruby-on-rails forms


    【解决方案1】:

    我会使用 hidden_field_tag 并根据每个表单的不同值手动设置 ID。像这样:

    <%= hidden_field_tag :field_name, 'value', :id => 'field_name_' + unique_value %>
    

    unique_value 可以是任何东西。如果这些表单具有它们引用的某种父记录,则它可能是父记录的 ID。我想这就是为什么你首先在同一个页面上有多个相似的表单。

    【讨论】:

      【解决方案2】:

      您可以简单地将 ID 作为选项传递。方法(form_tag_helper.rb)定义为:

      def hidden_field_tag(name, value = nil, options = {})
        text_field_tag(name, value, options.stringify_keys.update("type" => "hidden"))
      end
      

      所以写:

      <%= hidden_field_tag :field_name, "foo", :id => "hidden_field_1" %>
      <%= hidden_field_tag :field_name, "bar", :id => "hidden_field_2" %>
      

      生产:

      <input id="hidden_field_1" name="field_name" type="hidden" value="foo" />
      <input id="hidden_field_2" name="field_name" type="hidden" value="bar" />
      

      【讨论】:

        【解决方案3】:

        试试hidden_field_tag:

        <%= hidden_field_tag :field_name, "foo" %>
        

        【讨论】:

        • 啊,这行得通 - 但让我意识到我低估了我的问题。我实际上有许多表单,所有表单都提交到隐藏字段中具有不同值的相同操作 - 所以这会生成警告,因为输入 ID 是相同的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-11
        • 2011-06-08
        • 2011-01-06
        • 2016-09-06
        • 2012-10-29
        • 2011-09-13
        • 1970-01-01
        相关资源
        最近更新 更多