2012-01-24 4 views
0

このビットは一晩中私をイライラさせてしまいました。 。Ruby/Rails:ビュー内の文字列やモデル内のルートURLを指定する方法

私は動的ナビゲーションメニューを反映する非ActiveRecordモデル(DBに格納されていない)を持っていました。モデルのメニュー項目の1つの属性は当然ルートリンクです。 (問題のモデルは基本的にリンク/ルートを含むクラスを他のモデルルートに格納しています)モデルにURLやそのナビゲーションデータを格納するのは嫌いですが、これを設計するより良い方法を見てください。

link_to属性は、URLを決定するためにビューで使用される文字列としてのルートパス(user_pathなど)です。または、url_helper経由でルートから取得することで、ModelとしてURLに格納できます。 (私は思う)

だから誰でも、問題を解決する助けや手助けの提案がありますか? url_helperとurl_forは、一致するルートを持つモデルを想定しています。この場合、非ActiveRecordモデルは通常のモデルではなく、サイトの他の部分にリンクするナビゲーションメニューの表現です。

私は本当にヘルパーや関数がroute_to 'user_path'と言って欲しいだけです。これが可能なら誰でも知っていますか?

ご協力いただければ幸いです。ありがとう!

答えて

1

私がおそらくMVCモデルを悪用しているとの回答は、Rails.application.routes.url_helpersです。あなたはそれを直接の方法としてルートパスで呼び出すことができ、それはURLを返すでしょうが、私が見つけたトリックはsendメソッドがルートパスの文字列表現で呼び出すことができることです。これにより、コーディングがはるかに簡単になります。これがそのまま動作することに注意してください。単なる例です:

class Something 
    attr_accessor :somethings 
    def all() 
     @somethings = Array.new 
     somethings << Something.new('user_root_path') 
     somethings << Something.new('edit_user_path') 
     somethings << Something.new('edit_pets_path') 
    end 

    ... 

    def initialize(link) 
     @link = Rails.application.routes.url_helpers.send link 
    end 
end 
関連する問題