我的视图包含一系列选择标记。我想从视图到控制器的所有选择标签上获取所选值的值。
请参阅以下代码:
<% 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;按钮,我将在视图中的所有选择标签上作为参数传递所选项目的值。
答案 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]