从视图中获取没有表单的select标签的值到rails中的控制器

时间:2015-07-06 17:18:58

标签: ruby-on-rails select

我的视图包含一系列选择标记。我想从视图到控制器的所有选择标签上获取所选值的值。

请参阅以下代码:

<% dialog_tag :id => "imonggo_xero_dialog" do %>
<h3><%= @title %></h3>
<h5>Accounts Mapping</h5>
<hr>
<center>
<table id="listing">
    <tr>
        <th>Imonggo</th>
        <th>Xero Account</th>
    </tr>
    <tr class="<%= cycle "odd", "even" %>">
        <td>Total Sales</td>
        <td><%= select_tag 'sales', options_for_select(@revenues) %></td>
    </t>
    <tr class="<%= cycle "odd", "even" %>">
        <td>Cash</td>
        <td><%= select_tag :cash, options_for_select(@current_accounts)%></td>
    </t>
    <tr class="<%= cycle "odd", "even" %>">
        <td>Credit Card / EFTPOS</td>
        <td><%= select_tag :ccard, options_for_select(@current_accounts)%</td>
</table>
</center>

<br>

<p class="indent_top">          
    <%= button_to 'Save', "/#{@locale}/save_settings"%> 
</p>

<% end %>

我想点击&#34; Save&#34;按钮,我将在视图中的所有选择标签上作为参数传递所选项目的值。

2 个答案:

答案 0 :(得分:1)

问题的关键是正确指定处理form_tag中数据的控制器和操作。以下是通过params散列将两个值传递给控制器​​的代码示例。

我认为您可能遇到的一些问题将归结为您使用button_to标记。请注意,我使用submit_tag来处理表单。

<%= form_tag "/my_controller/my_method" do %>
    <div>
        <%= label_tag "Foo" %>
    </div>
    <div>
        <%= select_tag("foo", options_for_select(@foos_list, :selected => @selected_foo)) %>
    </div>

    <div>
        <%= label_tag "Bar" %>
    </div>
    <div>
        <%= select_tag("bar", options_for_select(@bars_list, :selected => @selected_bar)) %>
    </div>

<div>
    <%= submit_tag "Save", :name => 'save' %>
    <%= submit_tag "Defaults", :name => 'defaults' %>
</div>

<% end %>

----- my_controller -----

    ...

      def my_method

        # if statement to distinguish between a save attempt and
        # resetting the form to default values

        if params[:save]
          puts params[:foo]
          puts params[:bar]
        end
      end
    ...

答案 1 :(得分:0)

当您提交表单时,表单内每个选择标记中的选定值将以params数组的形式传递给控制器​​,以便进行操作:

params[:sales]
params[:cash]
params[:ccard]