如何在text_field_tag中传递多个参数

时间:2012-08-17 23:55:54

标签: ruby-on-rails ruby ruby-on-rails-3

好的,所以我试图从一个文本字段中获取值,并在用户点击“添加”按钮或“搜索”按钮时将其传递给viewController中的两个不同方法(因此,如果用户按下搜索按钮, geoes到搜索方法,如果用户点击添加按钮就去添加方法),到目前为止,这个代码可以解决这个问题,但我不喜欢那里必须有两个文本字段,我应该使用button_to吗?如果是这样的话怎么样?谢谢

  <p><%= form_tag :controller => 'projects', :action => 'search', :method => 'get' do %>

  <%= text_field_tag :search, params[:search] %>
  <%= submit_tag "search" %>
  <%= link_to_function "Clear", "$('search_field').clear()" %>
  <% end %>
  </p>

  <p><%= form_tag :controller => 'projects', :action => 'add_project_to_user' do %>
  <%= text_field_tag :text, params[:text] %>
  <%= submit_tag "Add" %>
  <%= link_to_function "Clear", "$('search_field').clear()" %>
  <% end %>
  </p>

2 个答案:

答案 0 :(得分:2)

感谢您的澄清。限制是使用HTML而不是Rails:表单只能有一个操作。那就是:一个控制器&amp;动作。

选项很少。您可以在控制器中分支您的行为。有一个处理搜索或添加的操作,具体取决于单击的按钮(是的,您可以在表单中有多个按钮;此处有一个old railscasts (Episode 38)。但这很笨重。

另一种选择是使用JavaScript在表单上设置操作以响应按钮单击。

答案 1 :(得分:0)

有一个带有两个提交按钮的表单。在每个按钮上放置一个“onclick”事件。单击该按钮时,它可以使用javascript在提交发生之前更改表单的操作。每个按钮显然会改变适合自己的动作(搜索或添加)。