如何将form_tag链接到按钮栏4

时间:2014-10-25 13:25:08

标签: ruby-on-rails forms

我的页面上有一个选择框,当我单击提交按钮时,我想将选择选项作为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))%>

2 个答案:

答案 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_pathstore_rates_path(@store)