Rails:点击时在div中渲染部分

ays*_*110 5 ruby-on-rails partial-views

我正在构建一个Web应用程序,它具有分为两侧的UI,一个菜单栏和一个内容区域.菜单栏列出了用户编写的所有博客的标题.单击标题时,内容区域应更改为显示该博客的帖子.

1.)所以在我的菜单栏上,我有:

<%= link_to blog.title, blog, :remote=>true %>
Run Code Online (Sandbox Code Playgroud)

在我的内容领域,我有:

<div id="contenthere"></div>
Run Code Online (Sandbox Code Playgroud)

2.)因此,根据我的理解,这应该触发博客控制器的show方法.在那里,我在方法中有以下内容:

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

respond_to do |format|
   format.js { render :show_blog }
end
Run Code Online (Sandbox Code Playgroud)

3.)哪个应该在views/blogs文件夹中查找名为show_blog.js.erb的文件:

$("#contenthere").html("<%=escape_javascript(render :partial=>"show_blog")%>");
Run Code Online (Sandbox Code Playgroud)

这将使我的div与commenthere id一起使用_show_blog.html.erb部分(位于博客视图文件夹中),其blog参数等于我的博客控制器中设置的@blog参数.

4.)所以我的show blog partial有这段代码:

<%=@blog.title %>
<%=@blog.user_id %> 
Run Code Online (Sandbox Code Playgroud)

编辑:实际上,我搜索并发现我不能在assets文件夹中使用'render'方法 - 我在哪里放js.erb呢?我已将其移至博客视图文件夹,主视图文件夹(index.html.erb),只是/ view /文件夹...错误消失,但链接无法正常工作...

编辑:将show_blog.js.erb放在我的views/blogs文件夹中,因为它是调用它的博客控制器.单击链接时没有任何事情发生,控制台中没有显示JS错误.js被调用了吗?

编辑:更改以反映我的最终答案.

ays*_*110 0

最后的解决方案非常简单——部分调用了blog.title,blog.user_id,但@blog是传递的实际参数。只需更改为@blog.title 和@blog.user_id。