ある人の 1 か月の日課を示すカレンダー ページがあります。上部には、前月と翌月のボタンがあります。それらがクリックされると、日付を更新して新しいルーチンを見つける change_date アクションへの AJAX 呼び出しを行います。change_date.js.erb が呼び出されたときに、日常のアクションの内容を変更するコードを再度作成する必要がありますか? これはDRYに違反しているようです。初期ロード時にページにデータを入力するために使用したパーシャルを再利用して、ページに新しい値を再入力する方法はありますか?
質問する
122 次
2 に答える
0
ページが最初にロードされるときにも、ajax を介してその人のルーチンをロードします。
私はそれを js 関数にカプセル化し、ページが最初にロードされたときと月が変更されるたびにその関数を呼び出します。
于 2013-04-14T00:08:14.353 に答える
0
もちろん、あります。render
html テンプレートで行ったように使用するだけです。通常、ajax と通常の呼び出しをサポートするセットアップは次のようになります (もちろん、名前は大雑把に推測されます)。
# controller
def change_date
@dates = Date.where(:date => params[:date])
respond_to do |format|
format.html
format.js
end
end
# change_date.html.erb
<ul id="calendar">
<%= render @dates %>
</ul>
# change_date.js.erb
$("#calendar").html("<%= escape_javascript(render @dates) %>");
# _date.html.erb
<li><%= date.date %></li>
ご覧のとおり、両方のシナリオで同じパーシャルを簡単に使用できます。
もう 1 つの提案: セットアップによっては、コントローラーに別のメソッドを持たない方が安らかな場合がありますがshow
、この場合はクエリ パラメータに応じて動作するメソッドを使用します...
于 2013-04-14T00:10:00.810 に答える