url_for
Ruby on Rails 3.2.2 を使用しており、ネストされたリソースの適切な URL を生成したいと考えています。つまり、私は持っています:
# config/routes.rb
resources :articles do
resources :user_associations
end
# app/models/article.rb
class Article < ActiveRecord::Base
...
end
# app/models/articles/user_association.rb
class Articles::UserAssociation < ActiveRecord::Base
...
end
注: 生成された名前付きルートは、、、、のようなものarticle_user_associations
です。article_user_association
edit_article_user_association
私の見解では、次を使用します。
url_for([@article, @article_association])
次に、次のエラーが表示されます。
NoMethodError
undefined method `article_articles_user_association_path' for #<#<Class:0x000...>
ただし、ルーターをこのように述べると
# config/routes.rb
resources :articles do
resources :user_associations, :as => :articles_user_associations
end
メソッドはurl_for
期待どおりに機能し、たとえば URL を生成します/articles/1/user_associations/1
。
注: この場合、生成された名前付きルートはarticle_articles_user_associations
、article_articles_user_association
、edit_article_articles_user_association
、 ...のようになります。
ただし、ルーターの構築方法/後者/作業ケースでの名前付け方法は「良い」ものではないと思います。では、のような名前付きルートを生成することにより、何らかの方法でメソッドを機能させることは可能ですか?url_for
article_user_association
article_articles_user_association
メソッドに関連する公式ドキュメント(特に「名前付きルートの URL 生成」セクション)を読みましたActionDispatch::Routing::UrlFor
が、解決策が見つかりません。self.primary_key
おそらく、ステートメントでテーブルの主キー列を変更したいときに、特定の名前付きルーターを使用するようにRailsに「言う」方法があるかもしれません...
# app/models/articles/user_association.rb
class Articles::UserAssociation < ActiveRecord::Base
# self.primary_key = 'a_column_name'
self.named_router = 'user_association'
...
end