Javascript Rails仅渲染部分加载
我想在点击链接后重新加载页面的一部分。假设我想要实现一个点击计数器。这就是我所做的 在show.html.erb中Javascript Rails仅渲染部分加载,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我想在点击链接后重新加载页面的一部分。假设我想要实现一个点击计数器。这就是我所做的 在show.html.erb中 <div id="downloads"><%= render(partial:'downloads', locals: {user: @user}) %></div> <% user.attachments.each do |attachment| %> <%= attachment['download_count'] %
<div id="downloads"><%= render(partial:'downloads', locals: {user: @user}) %></div>
<% user.attachments.each do |attachment| %>
<%= attachment['download_count'] %>
<br>
<%= link_to 'download', {controller: 'files', action: 'download', attachment: attachment, user: user}%>
<% end %>
$("#downloads").html("<%= escape_javascript(render('downloads', locals: {user: params[:user]})) %>")
def download
user = User.find(params[:user])
# increasing attachment's dl count
# ...
render(:partial => 'users/downloads', locals: {user: user}, :layout => false)
end
因此,它将整个页面替换为部分页面。怎么了
编辑一个
添加了remote:true
,如主播所说链接到
<%= link_to 'download', {controller: 'files', action: 'download', attachment: attachment, user: user}, remote: true %>
正在尝试单击链接:在我的页面上什么也没有发生。尽管在控制台中:
FileController处理#下载为JS
参数:{“附件”=>{“下载计数”=>“175”,“文件名”=>“filename.doc”,“id”=>“2FD9ADBF6172740D4600000”,“键入”=>“appli”},“用户”=>“7FBCEAA6617F55E0000”}
呈现用户/_downloads.html.erb(60.7ms)
在106ms内完成200 OK(视图:63.1ms)
我认为我现在面临一个javascript问题。看起来您的控制器返回的是HTML响应,而不是脚本响应。尝试在链接_中添加参数:remote=>true,以:
<%= link_to 'download', {controller: 'files', action: 'download', attachment: attachment, user: user}, :remote => true %>
true%>
并确保您的控制器在响应块中有相应的format.js。好了,终于解决了我的问题。 我更换了我的控制器
render(:partial=>'users/downloads',locals:{user:user},:layout=>false)#呈现html:(
有点像
format.js{render(users/show.js.erb)}应该呈现js!
<%= link_to 'download', {controller: 'files', action: 'download', attachment: attachment, user: user}, :remote => true %>