左側にサイドバーがあり、プロジェクト、ブログなどのリンクを持つユーザーのダッシュボードページがあります。「プロジェクト」リンクなどのリンクをクリックすることができます。メインエリアでは、ページを更新することなく、プロジェクトのビューがロードされます(ビューはプロジェクトの箇条書きリストになります)。私はこれをAJAXで実現しようとしていますが、状況は機能していません。AJAX呼び出しが部分的にレンダリングされる3
これは、動作すると思われる方法です。
match '/dash' => 'users#show'
そして、show
アクションがusers_controller.rb
に呼び出されます。/dash
は、ユーザー#2にルーティングするように構成されてshow.html.erb
<%= link_to 'Projects', '/dash', remote: true %>
で、サイドバーのリンクをユーザーがクリックするには、このようなconfig/routes.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 %>");
そして、それは私のshow.html.erb
に#ajax divのを修正することになっている:
<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_ujs
という行はapp/assets/javascripts/application.js
の下に必要なjQueryとAJAXの機能をインポートしているはずです。