Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails仅渲染部分加载_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

Javascript Rails仅渲染部分加载

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'] %

我想在点击链接后重新加载页面的一部分。假设我想要实现一个点击计数器。这就是我所做的

在show.html.erb中

<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 %>