2014-02-25 102 views
0

我有這樣的路線:的ActionController :: RoutingError - 無路由匹配

耙路線:

channel_import GET /channels/:channel_id/import(.:format) channels#import 

但是當我嘗試在的link_to使用它:

<%= link_to "Import", channel_import_path(:hit_id => index), :method=>:get %> 

我得到此錯誤:

ActionController::RoutingError (No route matches {:action=>"import", :controller=>"channels", :hit_id=>0}): 

這是我在routes.rb中添加路徑:

resources :channels do 
    get 'import' => 'channels#import' 
end 

這是我的控制器:

class ChannelsController < ApplicationController 
    def import 
    puts "import action" 
    head :ok 
    end 
    ... 
end 
+0

此操作是否應在特定通道的上下文中? –

回答

4

您還需要通過channel_id在鏈接參數,像

<%= link_to "Import", channel_import_path(:hit_id => index, :channel_id => @channel.id), :method=>:get %> 

對於上面的輸出路徑將是這樣的/channels/21/import?hit_id=12

1

你設置你的鏈接:hit_id PARAM,而你的路線需要:channel_id。這應該工作:

<%= link_to "Import", channel_import_path(channel_id: 'your_channel_id') %> 
1

不知道爲什麼你'使用hit_id,應該是channel_id

<%= link_to "Import", channel_import_path(:channel_id => index) %> 

如果您有routes with params,則必須按路由文件中所述傳遞參數。因此,與下面的路線,你需要發送channel_id PARAM

channel_import GET /channels/:channel_id/import(.:format) channels#import 

有些事情,你可以是發送參數,可以與否的能力中受益。這可以通過括號來實現:

channel_import GET /channels(/:channel_id)/import(.:format) channels#import 
相關問題