左側にプロジェクト、ブログなどのリンクを含むサイドバーがあるユーザーのダッシュボード ページがあります。「プロジェクト」リンクなどのリンクをクリックすると、メイン エリアでプロジェクトのビューが表示されるようにしたいと考えています。ページを更新せずに読み込みます (ビューはプロジェクトの箇条書きリストになります)。これを AJAX で実現しようとしていますが、うまくいきません。
これが私がそれがうまくいくはずだと思う方法です。ユーザーはサイドバーのリンクをクリックしますshow.html.erb
<%= link_to 'Projects', '/dash', remote: true %>
whereは、次のようにファイル/dash
内の users#show にルーティングするように構成されています。config/routes.rb
match '/dash' => 'users#show'
そして、コントローラーshow
でアクションが呼び出されます。users_controller.rb
def show
@user = User.find(params[:id])
@projects = @user.projects
respond_to do |format|
format.html # renders show.html.erb
format.js # renders show.js.erb
end
end
どこshow.js.erb
で実行されます。私のshow.js.erb
ファイルには次の1行があります:
$('#ajax').html("<%= escape_javascript(render(:partial => 'projects/index')).html_safe %>");
そして、それは my の #ajax div を変更することになっていますshow.html.erb
:
<div id="ajax">
<%= render :template => 'projects/index' %>
</div>
はapp/views/projects/index.html.rb
@projects を受け取り、次のようにリストを提供します。
<% @projects.each do |project| %>
<p><%= project.name %></p>
<% end %>
明らかに、これは機能していないため、私は間違ったことをしています。私は何を間違っていますか?他の場所で変更する必要があるコードはありますか? 私は Rails 3.2.13 を使用しているので、//=jquery
必要な jQuery および AJAX 機能がインポートされている必要があります//=jquery_ujs
。app/assets/javascripts/application.js