2012-07-25 114 views
0

我试图在邮件视图中使用url_for的定义路线:没有路由匹配,即使在轨道限定3.2

<%= url_for(
    :controller => 'scribe_requests', 
    :action => 'accept', 
    :id => @match.acceptance_token, 
    :only_path => false) %> 

我在routes.rb中定义的路线:

resources :scribe_requests do 
    member do 
    match 'accept' => 'scribe_requests#accept', :as => :accept 
    end 
end 

和我的控制器:

class ScribeRequestsController < ApplicationController 
    respond_to :html 

    def accept 
    .. 
    end 
    .. 
end 

我不确定这里发生了什么问题?我的延迟作业与异常失败

“{无路由匹配{:控制器=>” scribe_requests”:动作=> “接受”, :ID => “nv4Nl8wWXLX2zFDm3s3t7w”} /家/赛义德/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.2.5/lib/action_dispatch/routing/route_set.rb:532:in raise_routing_error' /home/syed/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.2.5/lib/action_dispatch/routing/route_set.rb:528:in rescue in generate' /home/syed/.rvm/ gem/ruby​​-1.9.2-p0/gems/actionpack-3.2.5/lib/action_dispatch/routing/route_set.rb:520: generate' /home/syed/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.2.5/lib/action_dispatch/routing/route_set.rb:561:in 生成' /home/syed/.rvm/gems/ruby-1.9。 2-p0/gems/actionpack-3.2.5/lib/action_dispatch/routing/route_set.rb:586:在 url_for' /home/syed/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.2.5/lib/action_dispatch/routing/url_for.rb:148:in url_for' /home/syed/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.2.5/lib/action_view/helpers/url_helper.rb:107:in url_for' /home/syed/work/projects/mapunity/retina-india/app/views/notifier/scribe_service_needed_email.html.erb:47:in _app_views_notifier_scribe_service_needed_email_html_erb___981003510_106966530' /home/syed /。 RVM /宝石/红宝石1.9.2-P0 /宝石/ ActionPack的-3.2.5/LIB/ACTION_VIEW/template.rb:145:在 `块中呈现”

+0

你尝试重新启动服务器吗? – shime 2012-07-25 15:12:50

+0

是的。重新启动后尝试,路线甚至出现在耙路中。 – 2012-07-25 16:33:56

+0

你想要的路线显示在耙路线命令? – 2012-07-25 15:19:47

回答

0

不得不添加:via选项将路线定义和它的工作。奇怪的是,我做到了这一点,没有任何影响。可能是一些缓存问题。所以改变后,我的路由定义成了,

resources :scribe_requests do 
    member do 
    match 'accept' => 'scribe_requests#accept', :via => :get, :as => :accept 
    end 
end 

试运行:

ruby-1.9.2-p0 > app.url_for :controller => 'scribe_requests', :action => 'accept', :id => 'test' 
=> "http://www.example.com/scribe_requests/test/accept" 

感谢您的帮助。