我有一个自定义路由,看起来像:
match 'firsttime' => 'registrations#new', :via => :get,
:defaults => {:promotion_path => :firsttime}
上述路由的目标是能够有一个类似http://www.mysite.com/firsttime的url,它映射到注册控制器的"new"方法,该注册的促销是"firsttime"促销。
在我的一个模型中,我有一个快捷方法来尝试生成这个url:
class Registration < ActiveRecord::Base
include ActionView::Helpers
include ActionDispatch::Routing
include Rails.application.routes.url_helpers
belongs_to :promotion
def get_share_link()
promotion_path = promotion.url_path
url_to_share = url_for :controller => 'registrations', :action => 'new', :promotion_path => promotion_path
end
end
调用get_share_links()方法失败,报错:
没有路由匹配{:controller=>"registrations",:action=>"new",: promotion_path => "首次"}
我做错了什么,或者我是否使用了正确的方法?
路由在控制器中使用。把它作为before过滤器放在你的控制器中。
<标题>编辑# 1这个是设计的还是另一个用于认证的宝石?
<标题>编辑# 2 h1> 能到达http://www.mysite.com/registrations/new?promotion=firsttime
假设它是本地主机现在当然,因为你是在开发模式。
<标题>问题# 1 你说的"在我的一个模型中,我有一个快捷方法来尝试生成这个url"是什么意思:"你为什么生成这个,它在哪里使用?"邮件吗?看来你的路由是有效的,只是没有在你想要的时候生成,而且不清楚你想要在哪里使用它。
<标题>它是否与only_path: false
作为选项提供?