5

メニューバーとコンテンツ領域の 2 つの側面に分割された UI を備えた webapp を構築しています。メニュー バーには、ユーザーが書いたすべてのブログのタイトルのリストがあります。タイトルをクリックすると、コンテンツ エリアが変更され、そのブログの投稿が表示されます。

1.) メニュー バーには次の項目があります。

<%= link_to blog.title, blog, :remote=>true %>

私のコンテンツ領域には、次のものがあります。

<div id="contenthere"></div>

2.) したがって、私の理解では、これによりブログ コントローラーの show メソッドがトリガーされるはずです。そこには、メソッドに次のものがあります。

@blog = Blog.find(params[:id])

respond_to do |format|
   format.js { render :show_blog }
end

3.) views/blogs フォルダーで show_blog.js.erb というファイルを探す必要があります。

$("#contenthere").html("<%=escape_javascript(render :partial=>"show_blog")%>");

これは、commenthere id を持つ div を取得し、ブログ コントローラーで設定された @blog パラメーターと等しいブログ パラメーターを使用して、(ブログ ビュー フォルダーにある) _show_blog.html.erb パーシャルをレンダリングします。

4.) したがって、私のショー ブログ パーシャルには次のコードがあります。

<%=@blog.title %>
<%=@blog.user_id %> 

編集: 実際、私は周りを検索し、アセットフォルダー内からメソッド「render」を使用できないことがわかりました.js.erbをどこに置くのですか? ブログ ビュー フォルダ、ホーム ビュー フォルダ (index.html.erb)、および /view/ フォルダだけに移動しました...エラーはなくなりましたが、リンクが機能していません...

編集: show_blog.js.erb をビュー/ブログ フォルダーに配置します。ブログ コントローラーがそれを呼び出しているためです。リンクをクリックしても何も起こらず、コンソールに JS エラーが表示されません。jsはまったく呼び出されていますか?

編集:私の最終的な答えを反映するように変更されました。

4

2 に答える 2

0

最終的には非常に単純な解決策 --- パーシャルは blog.title、blog.user_id を呼び出していましたが、@blog は渡された実際のパラメーターでした。@blog.title と @blog.user_id に変更する必要がありました。

于 2013-06-20T21:23:57.913 に答える