我的页面上有一个选择框,当我单击提交按钮时,我想将选择选项作为post或get变量(我不认为这很重要)。如何链接此表单:
<%= form_tag(store_rates_path, method: 'get') %>
<%= label_tag(:year, "From (year)") %>
<%= select_tag(:year, options_for_select(get_select_options(1980, 2014))) %>
到这个按钮:
<%= button_tag(link_to("Get Rates", store_rates_path))%>
答案 0 :(得分:1)
您可以使用导轨submit_tag helper
<%= form_tag(store_rates_path, method: 'get') %>
<%= label_tag(:year, "From (year)") %>
<%= select_tag(:year, options_for_select(get_select_options(1980, 2014))) %>
<%= submit_tag "Get Rates" %>
<% end %>
或强>
如果您想使用链接或按钮提交表单参数,那么您可以使用一些js magic来实现它:
<%= form_tag store_rates_path, id: "store-form", method: 'get' %>
<%= label_tag(:year, "From (year)") %>
<%= select_tag(:year, options_for_select(get_select_options(1980, 2014))) %>
<%= link_to "Get Rates", "#", id: "store-form-btn" %>
<% end %>
$(document).on("click","#store-form-btn",function(e){
e.preventDefault();
$("#store-form").submit();
});
答案 1 :(得分:1)
您只需提供form_for
方法的路径,即可将其与rates
控制器的stores
操作相关联:
<%= form_tag(store_rates_path, method: "get") do %>
<%= label_tag(:year, "From (year)") %>
<%= select_tag(:year, options_for_select((1980..2014).to_a)) %>
<%= button_tag "Get Rates" %>
<% end %>
在您的rates
操作中,您可以检索传递的:year
参数,如下所示:
def rates
@year = params[:year]
end
如果您还没有,还需要在routes.rb
文件中定义路线,如下所示:
get 'stores/rate', to: 'stores#rate', as: 'store_rates'
重要强>
请注意,如果rates
属于特定商店,则表示网址类似于stores/1/rate
,则上述get
必须为stores/:id/rate
,这也意味着您需要将store.id
传递给您表单中的store_rates_path
:store_rates_path(@store)