0

わかりました。ユーザーが[追加]ボタンまたは[検索]ボタンをクリックすると、1つのテキストフィールドから値を取得し、viewControllerの2つの異なるメソッドに渡そうとしています(ユーザーが検索ボタンを押すと、検索に移動します)メソッドと、ユーザーが[追加]ボタンをクリックすると、[メソッドの追加]に移動します)、これまでのところ、このコードでうまくいきますが、2つのテキストフィールドが必要になるのは気に入らないので、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

説明をありがとう。制限は、RailsではなくHTMLにあります。フォームに含めることができるアクションは1つだけです。つまり、1つのコントローラーとアクションです。

いくつかのオプションがあります。コントローラ内で動作を分岐させることができます。クリックされたボタンに応じて、検索または追加のいずれかを処理する1つのアクションがあります(はい、フォーム内に複数のボタンを含めることができます。これには古いレールキャスト(エピソード38)があります。ただし、これはかなり不格好です。

もう1つのオプションは、JavaScriptを使用して、ボタンのクリックに応答してフォームにアクションを設定することです。

于 2012-08-18T00:22:22.650 に答える
0

2つの送信ボタンを備えた1つのフォームがあります。各ボタンに「onclick」イベントを配置します。ボタンがクリックされると、送信が行われる前にjavascriptを使用してフォームのアクションを変更できます。各ボタンは明らかにそれ自体に適切なアクションを変更します(検索または追加)。

于 2012-08-18T00:17:02.783 に答える