3

ページにいくつかのボタンがあり、クリックされたボタンに応じて、特定のフォームでモーダル ビューを表示したいと考えています。

私の考え: 1) すべてのボタンに対してモーダル フォームを生成できます。しかし、私はおそらく多くのボタンを持っているので、これはすぐに非効率になります. 2) javascript でボタンを押した後、フォームを作成する方法がいくつかあります。これはレールで可能ですか?form_tag を使用して、クリックされたボタンに基づいてオブジェクトまたは ID を渡したいです。

ありがとう!

4

2 に答える 2

6

まず、各フォーム ビューを別のパーシャル (_form1.html.erb、_form2.html.erb、_form3.html.erb) に配置します。ビューから各ボタンを作成し、レンダリングするフォームのパラメーターを使用してコントローラーにUnobtrusive ( http://railscasts.com/episodes/205-unobtrusive-javascript ) リクエストを送信します。次に、.js.erb ファイルで、ボタンから送信されたパラメーターに応じてレンダリングされるフォームを決定し、このフォームをモーダルに追加します。

my_view.html.erb

<%= link_to "Render Form1", my_controller_my_method_path(:form => "_form1",:object_type => "Object1",:object_id => '100'),:remote => true %>
<%= link_to "Render Form2", my_controller_my_method_path(:form => "_form2",:object_type => "Object2",:object_id => '144'),:remote => true %>
<%= link_to "Render Form2", my_controller_my_method_path(:form => "_form3",:object_type => "Object3",:object_id => '160'), :remote => true %>
<div id="#my_modal"></div>

my_controller.rb

def my_method
  @form_partial=params[:form]
  @object=params[:object_type].constantize.find(params[:object_id])
  respond_to  do |format|
   format.js{render :action=>:my_method}
  end
end

my_method.js.erb

$('#my_modal').html("<%= j render :partial => @form_partial %>");

_form1.html.erb

<%= form_tag @object do |form| =>
<%= form.input :name%>
<%end%>
于 2013-11-07T07:48:18.890 に答える
0

モーダルビューをコメントとして決定する値を渡し、リモートjsを使用してモーダル内の対応するビューをレンダリングするボタンクリック時のアクションの1つにリモートリクエストを送信する必要があります

于 2013-11-07T05:30:57.570 に答える