Ruby on Rails 3.2.2 を使用していますが、コントローラー アクションを別のコントローラー アクションに "マップ" できるかどうかを知りたいのですが、いくつかのパラメーターを変更します。つまり、次のモデルとコントローラーがあります。
# File system:
# /app/models/articles/user_association.rb
# /app/models/users/article_association.rb
# /app/controllers/users/article_associations_controller.rb
# /app/controllers/articles/user_associations_controller.rb
# /app/models/articles/user_association.rb
class Articles::UserAssociation < ActiveRecord::Base
...
end
# /app/models/users/article_association.rb
class Users::ArticleAssociation < Articles::UserAssociation # Note inheritance
#none
end
# /app/controllers/users/article_associations_controller.rb
class Articles::UserAssociationsController < ApplicationController
def show
@articles_user_association = Articles::UserAssociation.find(params[:article_id])
...
end
def edit
@articles_user_association = Articles::UserAssociation.find(params[:article_id])
...
end
...
end
# /app/controllers/articles/user_associations_controller.rb
class Users::ArticleAssociationsController < ApplicationController
def show
# It is the same as the Articles::UserAssociationsController#show
# controller action; the only thing that changes compared to
# Articles::UserAssociationsController#show is the usage of
# 'params[:user_id]' instead of 'params[:article_id]'.
@users_article_association = Users::ArticleAssociation.find(params[:user_id])
...
end
def edit
# It is the same as the Articles::UserAssociationsController#edit
# controller action; the only thing that changes compared to
# Articles::UserAssociationsController#edit is the usage of
# 'params[:article_id]' instead of 'params[:user_id]'.
@users_article_association = Users::ArticleAssociation.find(params[:user_id])
...
end
...
end
/users/:user_id/article
そこで、パスに関連するコントローラーのアクションとして、パスに向けられた HTTP リクエストを処理したいと思い/articles/:article_id/user
ます。
注: DRY (Don't Repeat Yourself) コードにするためにそれを作成したいと思いますが、前に述べたように、 と の間で変わるUsers::ArticleAssociationsController
のArticles::UserAssociationsController#show
はparams
.
出来ますか?