使用jquery在rails中渲染部分

时间:2011-08-01 16:15:54

标签: ruby-on-rails ajax jquery

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

我的代码:

视图/页/ home.html.erb:

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

。 。

<div id="main_frame"></div>

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( "<%= escape_javascript( render( :partial => "/upload/upload_form" ) %>" );

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

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

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

我认为您必须将link_to更改为:

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:-1)

您是否尝试使用.load()而不是.html()?

另外,请尝试使用此行:

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