我有一个自定义路线,如下所示:
match 'firsttime' => 'registrations#new', :via => :get, \
:defaults => {:promotion_path => :firsttime}
上述路线的目标是能够拥有像http://www.mysite.com/firsttime这样的网址,该网址映射到注册控制器的“新”方法,该注册的促销是“第一次”促销。< / p>
在我的一个模型中,我有一个快捷方法来尝试生成这个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 =&gt;“registrations”,:action =&gt;“new”, :promotion_path =&gt; “中firsttime”}
我做错了什么,或者我甚至使用了正确的方法?
答案 0 :(得分:0)
路由器在Controller中使用。请将其作为控制器中的前置过滤器添加。
这个设计或其他宝石用于身份验证吗?
当然,你可以到http://www.mysite.com/registrations/new?promotion=firsttime
假设它是localhost,因为你处于开发模式。
你是什么意思“在我的一个模型中,我有一个快捷方法来尝试生成这个网址:”你为什么生成这个以及它在哪里使用?邮件?看起来你的路线很有效,它只是在你想要的时候没有被制作出来,并且不清楚你想要它在哪里被使用。
是否适用于作为选项提供的only_path: false
?