1

ある人の 1 か月の日課を示すカレンダー ページがあります。上部には、前月と翌月のボタンがあります。それらがクリックされると、日付を更新して新しいルーチンを見つける change_date アクションへの AJAX 呼び出しを行います。change_date.js.erb が呼び出されたときに、日常のアクションの内容を変更するコードを再度作成する必要がありますか? これはDRYに違反しているようです。初期ロード時にページにデータを入力するために使用したパーシャルを再利用して、ページに新しい値を再入力する方法はありますか?

4

2 に答える 2

0

ページが最初にロードされるときにも、ajax を介してその人のルーチンをロードします。

私はそれを js 関数にカプセル化し、ページが最初にロードされたときと月が変更されるたびにその関数を呼び出します。

于 2013-04-14T00:08:14.353 に答える
0

もちろん、あります。renderhtml テンプレートで行ったように使用するだけです。通常、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 に答える