私のアプリには、ユーザーが作成したルールを一覧表示するユーザー ダッシュボードがあります。各ルールは「ルールセット」に追加できます。ルールごとに、クリックするとフォームが読み込まれるボタンを表示して、ユーザーがそのルールをルールセットに追加できるようにしたいと考えています。
ビューには、各ルールを表示する次のコードがあります。
<% @rules.each do |rule| %>
<div class="rule-wrapper">
<div class="rule-content row">
<div class="span6">
<strong>Rule:</strong> <%= rule.description %>
</div>
<div class="span2">
<div class="add-to-ruleset-form">
</div>
</div>
</div>
......
私のルールコントローラーの関連部分は次のとおりです。
class RulesController < ApplicationController
before_filter :authenticate_user!
def add_rule_to_ruleset
@ruleset = Ruleset.find(params[:ruleset_id])
@rule = Rule.find(params[:rule_id])
@ruleset.rule << @rule
end
....
最後に、私の dashboard.js.erb ファイルは次のようになります。
$('.add-to-ruleset').click(function(e){
e.preventDefault();
$('.add-to-ruleset-form').html('<%= escape_javascript(link_to render :partial => "add_to_ruleset_form", :locals => {:rule => rule}) %>')
});
ボタン (「ルールセットに追加」) がクリックされたときに、パーシャルがレンダリングされるようにしたいと思います。js.erb ファイルで「escape_javascript」ヘルパーを使用しようとしましたが、正しい「ルール」変数を渡していません。jQuery の load() も使用しようとしましたが、jQuery を使用してパーシャルに "rule" インスタンス変数を渡す方法がわかりません。別の方法はありますか?