0

そのため、Rails 3 で link_to メソッドと ajax をどのように使用すれば、異なるパーシャルを再レンダリングできるのか疑問に思っていました。

例:

2 つのリンクがshow.html.erbあり、すべてのリンクにレンダリングする部分があるとします。

<li><%= link_to "Group1", user_path(@user), { :action => 'group1' , :method => :get, :remote => true} %></li>
<li><%= link_to "Group2", user_path(@user), { :action => 'group2' , :method => :get, :remote => true} %></li>

そして、この div でパーシャルをレンダリングします。

<div id="profile-data">
 ...render here...
</div>

にはUsersController、各パーシャルの呼び出しメソッドがあります。

def group1
  respond_to do |format|
    format.js
  end
end
def group2
  respond_to do |format|
    format.js
  end
end

そしてもちろん、ビュー ユーザー フォルダーに js ファイルがあります。

group1.js.erb

$("#profile-data").html("<%= escape_javascript(render(:partial => 'group1')) %>");

group2.js.erb

$("#profile-data").html("<%= escape_javascript(render(:partial => 'group2')) %>");

私の質問は次のとおり です。これは、ajax でさまざまなパーシャルをレンダリングする正しい方法ですか? 何か不足していますか?それらを何らかの方法でルーティングする必要がありますか?

このコードは現在機能していません。理由はわかりません。助けていただければ幸いです。

4

2 に答える 2

0

link_to は多少似ているはずです

<%= link_to "Group1", {group1_users_path, :format => :js} , :method => :get, :remote => true  %>

また

<%= link_to "Group1", {:controller=>:users,:action=>:group1, :format => :js} , :method => :get, :remote => true  %>

またはそれがメンバールートであり、user_id が必要な場合

<%= link_to "Group1", {group1_users_path(@user) :format => :js} , :method => :get, :remote => true  %>

link_to の 2 番目のパラメーターは url オプションであるため、url 関連のオプションのみが含まれ、他のオプションはハッシュから除外されるか、パラメーターとして渡されます。

rails cocs で詳細を確認してください。きちんとしたドキュメントと例があります。

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

ルートファイルに group1 と group2 が必要です

それは次のようになるはずです

resourses :users do
  collection do 
    get "group1"
    get "group2"
  end
end

これにより、ヘルパー group1_user_path および group2_user_path が追加されます

Railsのドキュメントを徹底的に読むことをお勧めします

http://guides.rubyonrails.org/routing.html#adding-more-restful-actions

于 2012-07-27T21:49:57.760 に答える
0

link_to で JavaScript リクエストを行いたいことを明示的に述べる必要があります。これは、オプション ハッシュの形式を js に設定することで実行できます:format => :js

したがって、あなたの場合、次のようになります。

<li><%= link_to "Group1", user_path(@user), { :action => 'group1' , :method => :get, :remote => true, :format => :js} %></li>
<li><%= link_to "Group2", user_path(@user), { :action => 'group2' , :method => :get, :remote => true, :format => :js} %></li>
于 2012-07-27T20:52:16.900 に答える