1

これが私の単純な ajax コードです。

リクエストが行われ、レスポンスを受け取りましたが、ビューが新しいデータでレンダリングされません。現在のページ内にレンダリングされる代わりに、レンダリングするように要求した新しい html を含む新しいページを取得します。

コントローラー -

    def list
    @users = User.find(:all)
    end

    def show
    respond_to do |format|
    format.html {   render :partial => "ajaxshow" }
    format.js
    end
    end

見る -

<% @users.each do |c| %>
<%= link_to c.user_id, {:action => :show, :user_id => c.user_id, :remote => true } %>
<% end %>

部分的 -

# cat _ajaxshow.html.erb
<div  align="left" id="user_ajax">
<table width="1000px">
<tr><th>User ID</th><th>First</th><th>Last</th><th>ID</th><th>Email</th></tr>
</table>

ログ -

Started GET "/users/show?remote=true&user_id=someuser" for 10.10.10.10 at 2012-04-17 04:01:09 -0400
Processing by UsersController#show as HTML
  Parameters: {"remote"=>"true", "user_id"=>"someuser"}
  Rendered users/_ajaxshow.html.erb (0.3ms)
Completed 200 OK in 2ms (Views: 1.3ms | ActiveRecord: 0.0ms)
4

2 に答える 2

1

呼び出しを通じて呼び出されるコントローラーアクションの.js.erbファイルが必要です。Userformat.js

show.js.erb使用中

$('#some_div_id').html($('<%= render :partial => "ajaxshow" %>'))

とにかく、あなたの行動の目的は私にはあいまいに思えます。

于 2012-04-17T08:32:52.767 に答える
1

link_toはajax呼び出しをトリガーしません

  <%= link_to c.user_id, {:action => :show, :user_id => c.user_id, :remote => true } %>

まず、上記のコードを変更します

 <%= link_to c.user_id, {:action => :show, :user_id => c.user_id }, { :remote => true, :method => :get } %>
于 2012-04-17T08:34:28.450 に答える