2015-12-23 55 views
2

我试图通过单击Link_to呈现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

为什么你把method: :refresh。从链接中删除method: :refresh。你route应该

resources :modifications do 
    member do 
    get :refresh 
    end 
end 

那么你的路径应该是

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

而且在'刷新”行动

def referesh 
    @modification = Modification.find(params[:id]) 
    respond_to do |format| 
    format.js{} 
    end 
end 

来源Adding More RESTful Actions

+0

我尝试了,但现在我有这样的:'已完成406不可接受在3ms ActionController :: UnknownFormat(ActionController :: UnknownFormat):app/controllers/modifications_controller.rb:18:in'refresh'' – DanielsV

+0

您可以从'/ views/modifications/refresh.js.erb'文件中发表评论,并写下'alert(Hello)'。这会测试你的代码,它会通过'ajax'调用进行'刷新'。试过让我知道 –

+0

,但是与未知格式相同的问题。警报不要射击! – DanielsV

2

您首先应该从link_to删除method: :refresh (你不需要它):

<%= 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 %> 
+0

在'member'路由的情况下,link_to应该是'refresh_modification_path(@modification)'(不包括s) –

+0

谢谢 - 更新 –

+0

现在我得到这个:NoMethodError(未定义的方法'盒'为零:NilClass):不能访问部分关联。 – DanielsV