使用jquery在rails中渲染部分

我试图在我的主页上设置导航栏,当用户点击链接时,该导航栏将部分加载到div元素中。 我按照这篇文章中的步骤进行了修改,并按照我认为需要进行了修改: Rails 3 – link_to使用jquery ajax调用partial

我的代码:

视图/页/ home.html.erb:

 'load_upload_partial', :remote => true %> 

。 。 。

 

pages_controller:

 def load_upload_partial respond_to do | format | format.js {render :layout => false} end end 

/views/uploads/load_upload_partial.js.erb:

 $("#main_frame").html( " "/upload/upload_form" ) %>" ); 

此示例中的部分只是一个表单。 当我点击链接时,我得到一个空白页面,这是地址栏: http:// localhost:3000 / load_upload_partial?remote = true

这让我觉得链接没有触发ajax GET请求(如果这是正确的术语)。 如果是这种情况,有什么我需要添加到我的application.js文件? 我在rails和jquery上跟踪了railscast#136,但无法弄清楚application.js代码应用于我的案例。 任何想法都非常感激。 谢谢。 汤姆

我现在倾向于避免像你想要的那样使用RJS。 我更喜欢用把手等工具创建js模板。

我只使用ajax来获取原始数据,然后重新创建部分客户端。 它对服务器负载和数据传输更好。

我认为你必须将你的link_to改为:

 <%= link_to "Files", {:action => 'load_upload_partial' }, remote => true %> 

该问题与link_to的方法签名有关。

遇到了同样的问题 – 提示是在生成的格式错误的html中 – 看一下代码生成的标签的href属性的值。 我打赌它看起来很时髦。 这是正确的代码:

  <%= link_to "Files", your_path, action: 'load_upload_partial', remote: true %> 

你尝试过使用.load()代替.html()吗?

另外,请尝试使用此行:

 $("#main_frame").html( "<%= escape_javascript( render( :partial => '/upload/upload_form' ) %>" );