2011-10-23 4 views
2

rails newbie herem、jqueryについて少し勉強していますので、AJAXを使って部分的な見方を変えようと思っていました。Rails 3:部分的な部分を変更するためのjquery

今すぐユーザーのダッシュに「likes」ページへのリンクがあります。「likes」ページを表示するには完全にリロードする必要があります。likes_user_path @ userで更新するにはどうすればよいですか?)

ビュー/ページ/ home.html.erb

<div id="left"> 
    <div id="dash-statistics"> 
     <a href="<%= likes_user_path(@user) %>"> 
     <div id="likes" class="stat">Likes 
      <%= @user.likes.count %> 
     </div> 
     </a> 
    </div> 
    </div> 

    <div id="right"> 
    <div id="content"> 
    </div> 
    </div> 

がUserController

def likes 
    @title = "Likes" 
    @user = User.find(params[:id]) 
    @like_stuff = @user.likes.paginate(:page => params[:page]) 
    render 'show_likes' 
    end 

答えて

8

私が理解することは、あなたの中に、AJAXを使用して、リンクをクリックしてlikesをリロードしたいということですユーザーダッシュボード。

<%= link_to "Likes", likes_user_path(@user), :remote => true %> 

次に、あなたのコントローラでは、(もちろん、他のオプションがあることができ、あなたが一番上にrespond_to :html, :jsを持っていることを確認してください。実行する

まず最初は、リンクを書き換えて、このような:remote => trueを追加することです、しかし、あなたはあなたが最後にrenderをしない、あなたのようになります同類をロードするために使用するように、コントローラ、内likesと呼ばれる機能を行うことができ、その後

)それらの間であることを:jsありしかし、respond_with @likesrespond_toフィルタに:jsを持つことで、Railsは自動的にそれに応じて動作します。

次に、対応するビューを作成するには、あなたはこれがあなたのメインであることを前提としてい

$('#likes').html('<%= escape_javascript(render "likes", :likes => @likes) %>'); 

のようなものを入れている(私はCoffeeScriptのは、この場合には、箱から出して動作する場合、正確にはわからない)likes.js.erbと呼ばれますあなたが好きをレンダリングするビューは、次のようになりますid=likesを持つ要素があります:

<div id="likes"> 
    <%= render "likes", :likes => @likes %> 
</div> 

はと同類

012をレンダリング部分 _likes.html.erbもあります
<% likes.each do |like| %> 
    <div> 
    <%= like.name %> 
    </div> 
<% end %> 

これで私はかなりそれをカバーしたと思います。

+0

こんにちは、ありがとうございました。たぶん、私はこれを理解するためにまだ新しいレールになっているかもしれないし、おそらく私が理解していないjqueryかもしれない。どのコントローラーとメソッドがrespond_to:html、:jsが正確に入りますか? respond_with @Likesはどのように機能しますか?私はそれにまったく従わない。 div id = "content"の内部にレンダリングするために好きなページが必要です。これがどう機能するかは依然として混乱しています。私が新しい人ならごめんなさい。 –

+0

具体的には、あなたのケースでは、コントローラはUsersであり、あなたの質問にはlikesというアクションがあります。それに応じて、好きなものを返すべきです(その機能はかなり大丈夫ですが、リファクタリングしてとにかく、 'likes'アクションは' respond_with'で終わる必要があり、 'render'ではなく、あなたはajaxを使って呼び出しています。そして、Railsはあなたの' #likes' div - 'likes.js.erb'をチェックアウト - '#likes'の中のhtmlの内容を置き換えます) –

+0

ありがとうございました。 –

関連する問題