我正在尝试在我的主页上设置一个导航栏,当用户点击链接时,该导航栏将部分加载到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代码应用于我的案例。 任何想法都非常感激。谢谢。汤姆
答案 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' ) %>" );