Rails<%= hidden_​​field%>错误的参数数量(1对2)

时间:2012-10-04 11:35:15

标签: ruby-on-rails ruby

我有两种形式。其中一个有两个字段,名称字段和名为original_number的字段。当表单POST时,它会导致另一种形式,我想要做的一件事是将名称字段和original_number字段存储为第二种形式的隐藏值。

但是,我不知道如何使它对于第二种形式的值字段,rails从POST方法接收信息。

如何使隐藏字段的值使用来自第一个表单的POST的信息?

这是我的第一张表格

  <%= form_tag("/find_numbers", :method => "post", :id => "new_user" ) do %>
    <%= render 'shared/error_messages' %>    

    <%= label_tag(:name, "What Are You Tracking?") %>
     <%= text_field_tag(:name) %>

    <%= label_tag(:original_number, "Your Original Number") %>
    <%= text_field_tag(:original_number) %>
    <hr class="faded" />
    <h4>Choose One Of The Methods Below To Find Your Tracking Number</h4>
    <hr class="faded" />
    <%= label_tag(:in_postal_code, "Enter Your Postal Code (e.g. 94117):") %>
    <%= text_field_tag(:in_postal_code) %>

    <%= label_tag(:near_number, "Near this other number (e.g. 4156562345)") %>
    <%= text_field_tag(:near_number) %>

    <%= label_tag(:contains, "Matching this pattern (e.g. 415***EPIC):") %>
    <%= text_field_tag(:contains) %>  

    <%= submit_tag("Search", :class => "btn btn-large btn-primary") %>


  <% end %>

这是我的第二个表单,它接收来自第一个表单的信息:

<%= @numbers.each do |number| %>

    <%= form_tag(:controller => "phones", :action => "create" ) do %>
        <%= hidden_field(:original_number) %>
        <%= hidden_field(:name) %>
        <%= hidden_field(:twilio_number, :value => number.phone_number) %>

        <div class="found_list">
            <div class="found_phone_number">
                <%= label_tag(:number, number.friendly_name) %>
            </div>
            <div class="choose_found_number">
             <%= submit_tag("Choose This Number", :class => "btn btn-large btn-success") %>
            </div>
        </div>
            <hr>
    <% end %>
<% end %>

注意

        <%= hidden_field(:original_number) %>
        <%= hidden_field(:name) %>

请注意第一个表单发送的请求参数,

    Request

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"RMvjP9PQt9hVEJE449pMqgqnFcreqvXtmZFEyU+641g=",
 "name"=>"Stepan Parunashvili",
 "original_number"=>"1231231234",
 "in_postal_code"=>"",
 "near_number"=>"",
 "contains"=>"415"}

如何获取“name”=&gt;“Stepan Parunashvili”,填写隐藏字段:name,以及“original_number”=&gt;“1231231234”,以填充隐藏字段的字段:original_number?

感谢您对我的感谢,直到现在,我们将非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

试试这个

          <%= hidden_field :original_number, params[:original_number] %>
          <%= hidden_field :name, params[:name] %>

答案 1 :(得分:1)

hidden_field方法有两个版本:一个是ActionView::Helpers::FormBuilder类的实例方法,它接受一个参数,一个是ActionView::Helpers::FormHelper中的辅助方法,它有两个强制性论点。由于您没有使用表单助手,因此您将调用第二个版本,这会为您提供参数错误。

简单修复:改为使用hidden_field_tag方法:

hidden_field_tag(:original_number)

或者如果您还想提供值:

hidden_field(:original_number, params[:original_number)

Aayush的回答也是有效的,但是这样你的表单就是一致的,因为你对其他表单字段使用了*_tag方法。