我正在尝试通过单击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/