1

私は短い link_to 構文が本当に好きです:

link_to "Ad", ad

ただし、デフォルトでは、マガジンの下にネストされているため存在しない ad_path メソッドを使用しようとします。使用する正しいパスは magazine_ad_path です

これはまだうまくいきます:

link_to "Ad", magazine_ad_path(ad)

しかし、ルートで階層が定義されているため、magazine_ad_path の呼び出しは冗長な気がします。

広告属_雑誌と雑誌には_多くの広告があります

ルートや他の場所でデフォルトの方法を変更する方法はありますか?

短い「ピシアー」構文は、ここの 2 番目の例です: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

編集:申し訳ありませんが、URL 構造が明確ではありませんでした。/magazine/5/ad/12 である必要があります。広告の外部キーのために雑誌のIDが技術的に必要ないことは知っていますが、それが彼らがURLを望んでいる方法です。

ここに私のroutes.rbがあります

MyApp::Application.routes.draw do
  resources :magazines do
    resources :ads do
      member do
        get :info, :preview, :send, :fetch
        put :publish
      end
    end
  end
end
4

2 に答える 2

0

ルート定義には :as オプションがあります。

resources :magazines do
  resources :ads, :as => :ads
end

仕事をするかもしれません。

編集:

状況を確認した後、上記の回答は機能しません。resources :adsまたは、routes.rbに追加することもできます (既にあるネストされた宣言は別として)。

于 2012-08-31T23:06:56.440 に答える
0

名前空間付きのリソースに以下のようなリンクを書くことができます:

link_to "Ad", [:magazine, ad]

または、ネストされたリソースの場合:

link_to "Ad", [magazine, ad]
于 2012-08-31T22:13:27.767 に答える