url_for不适用于自定义路由

时间:2012-12-21 23:17:14

标签: ruby-on-rails ruby-on-rails-3

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

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”}

我做错了什么,或者我甚至使用了正确的方法?

1 个答案:

答案 0 :(得分:0)

路由器在Controller中使用。请将其作为控制器中的前置过滤器添加。

编辑#1

这个设计或其他宝石用于身份验证吗?

编辑#2

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

问题#1

你是什么意思“在我的一个模型中,我有一个快捷方法来尝试生成这个网址:”你为什么生成这个以及它在哪里使用?邮件?看起来你的路线很有效,它只是在你想要的时候没有被制作出来,并且不清楚你想要它在哪里被使用。

答案

是否适用于作为选项提供的only_path: false