代码之家  ›  专栏  ›  技术社区  ›  Chowlett

非模型形式的简单隐藏字段

  •  3
  • Chowlett  · 技术社区  · 16 年前

    在RubyonRails中,在许多非模型表单中创建几个具有已知值和相同名称的简单隐藏字段的最简单方法是什么(在我的例子中是form_remote_标记,但我猜这与此无关)?

    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 %>
    

    <input id="field_name_0" name="field_name" type="hidden" value="foo" /> )但是如果我忽略了 :name 参数,则呈现的字段具有 field_name[0] . 省略 0 显然会导致非常奇怪的行为。

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

    有没有一种方法可以在更少的参数中实现这一点(除非定义助手)?

    3 回复  |  直到 16 年前
        1
  •  6
  •   Jimmy Nitzan Tomer    16 年前

    我会用 hidden_field_tag

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

    哪里 unique_value 什么都可以。如果这些表单引用了某种父记录,则可能是父记录的ID。我想这就是为什么一开始在同一页上有多个相似的表单。

        2
  •  3
  •   tsdbrown    16 年前

    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
  •  1
  •   alex.zherdev    16 年前

    尝试 hidden_field_tag

    <%= hidden_field_tag :field_name, "foo" %>
    
    推荐文章