我正在尝试通过单击boxes_list渲染Link_to。不知道为什么它不起作用。

# Routes.rb
resources :modifications do
    collection do
      get 'refresh'
    end
end


# ModificationsController
  def refresh
    respond_to do |format|
        format.js {}
    end
  end


# link in /views/modifications/_boxes_list.html.erb that should refresh boxes_list
<%= link_to "refresh", refresh_modifications_path(@modification), remote: true, method: :refresh %>


# JS responce in /views/modifications/refresh.js.erb
$('#boxes_count').html("<%= escape_javascript(render( :partial => 'boxes_list' )).html_safe %>");


在服务器控制台中,按此链接时看不到任何内容。链接位于常规显示操作下的“修改显示”页面上。 Rails 4!

最佳答案

首先,您应该从method: :refresh中删除​​link_to(不需要):

<%= link_to "refresh", refresh_modifications_path, remote: true %>


如果您使用的是collection路由,则也不需要提供对象。如果使用member路由,则必须传递该对象。

-

为了避免尝试遍历代码的麻烦,这是您应该拥有的:

#config/routes.rb
resources :modifications do
   get :refresh, on: :member #-> url.com/modifications/:id/refresh
end

#app/controllers/modifications_controller.rb
class ModificationsController < ApplicationController
   respond_to :js, only: :refresh
   def refresh
   end
end

#app/views/modifications/refresh.js.erb
$('#boxes_count').html("<%=j render partial: 'boxes_list' %>");


您将按照以下方式发送请求:

<%= link_to "Refresh", refresh_modification_path(@modification), remote: true %>

关于javascript - Link_to不呈现自定义 Controller Action 的部分 Action ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34434825/

10-11 14:07