0

次のようなカスタム ルートがあります。

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

上記のルートの目標は、 http://www.mysite.com/firsttimeのような URLを登録コントローラーの「新規」メソッドにマップできるようにすることです。その登録のプロモーションは「初回」です。昇進。

私のモデルの 1 つで、この 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あなたは開発モードにいるので、もちろん今のところローカルホストであると推測できますか。

質問1

「私のモデルの 1 つに、この URL を試行して生成するためのショートカット メソッドがあります:」とはどういう意味ですか? メール?あなたのルートは機能しているようですが、必要なときに作成されていないだけで、どこで使用したいかは不明です。

答え

only_path: falseオプションで付い てますが動きますか?

于 2012-12-21T23:21:49.430 に答える