0

我有一个自定义路线,如下所示:

match 'firsttime' => 'registrations#new', :via => :get, \
    :defaults => {:promotion_path => :firsttime}

上述路线的目标是能够有一个像http://www.mysite.com/firsttime这样的 url ,它映射到注册控制器的“新”方法,该注册的推广是“第一次”晋升。

在我的一个模型中,我有一个快捷方法来尝试生成这个 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=>"firsttime"}

我做错了什么,或者我是否为此使用了正确的方法?

4

1 回答 1

0

路由在控制器中使用。将其作为之前的过滤器粘贴在您的控制器中。

编辑#1

这是用于身份验证的设计还是其他宝石?

编辑#2

当然,您现在可以http://www.mysite.com/registrations/new?promotion=firsttime假设它是 localhost,因为您处于开发模式。

问题 #1

“在我的一个模型中,我有一个快捷方法可以尝试生成这个 url:”你是什么意思?邮件?您的路线似乎有效,只是没有在您想要的时候制作,并且不清楚您希望在哪里使用它。

回答

它可以 only_path: false作为选项提供吗?

于 2012-12-21T23:21:49.430 回答