我点击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!
答案 0 :(得分:2)
首先,您应该从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 %>
答案 1 :(得分:0)
为什么要放method: :refresh
。从链接中删除method: :refresh
。您的route
应为
resources :modifications do
member do
get :refresh
end
end
那么你的路径应该是
<%= link_to "refresh", refresh_modification_path(@modification), remote: true %>
并且在'刷新&#39;动作
def referesh
@modification = Modification.find(params[:id])
respond_to do |format|
format.js{}
end
end