好的,所以我试图从一个文本字段中获取值,并在用户点击“添加”按钮或“搜索”按钮时将其传递给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>
答案 0 :(得分:2)
感谢您的澄清。限制是使用HTML而不是Rails:表单只能有一个操作。那就是:一个控制器&amp;动作。
选项很少。您可以在控制器中分支您的行为。有一个处理搜索或添加的操作,具体取决于单击的按钮(是的,您可以在表单中有多个按钮;此处有一个old railscasts (Episode 38)。但这很笨重。
另一种选择是使用JavaScript在表单上设置操作以响应按钮单击。
答案 1 :(得分:0)
有一个带有两个提交按钮的表单。在每个按钮上放置一个“onclick”事件。单击该按钮时,它可以使用javascript在提交发生之前更改表单的操作。每个按钮显然会改变适合自己的动作(搜索或添加)。