0

好的,所以当用户单击“添加”按钮或“搜索”按钮时,我试图从一个文本字段中获取值并将其传递给 viewController 中的两种不同方法(因此,如果用户按下搜索按钮,它将进行搜索方法,如果用户单击添加按钮,它会转到添加方法),到目前为止,这段代码可以解决问题,但我不喜欢必须有两个文本字段,我应该使用 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>
4

2 回答 2

2

感谢您的澄清。限制是 HTML,而不是 Rails:一个表单只能有一个动作。即:一个控制器和一个动作。

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

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

于 2012-08-18T00:22:22.650 回答
0

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

于 2012-08-18T00:17:02.783 回答