1

当面の質問は、主要なトピックを扱います。

  1. ネストされたリソース
  2. ポリモーフィック アソシエーション
  3. フォーム

写真と記事があり、どちらにもコメントがあると仮定します。これにより、ポリモーフィック アソシエーションが作成されます。

#Photo Model -> photo.rb
    class Photo < ActiveRecord::Base
      has_many :comments, :as => :commentable
      accepts_nested_attributes_for :comments
    end

#Article Model -> article.rb
    class Article < ActiveRecord::Base
      has_many :comments, :as => :commentable
      accepts_nested_attributes_for :comments
    end

#Comment Model -> comment.rb
    class comment < ActiveRecord::Base
      belongs_to :commentable, :polymorphic => true
    end

コメントを追加および表示するビューは、写真と記事の間で共有されます。

#Index View 
  <%= form_for [@comment] do |f| %>
     <%= render 'form', :f => f %>
     # more code...
  <% end %>

また、リソースの写真と記事は、次のように他のリソースにネストされています。

# Routes.rb    
namespace :galleries do
   resources :photos do
     resources :comments
   end
end

namespace :blogs do
   resources :articles do
     resources :comments
   end
end

上記のフォームでわかるように、ポリモーフィック リソースがありますが、リクエスト パスに応じて親リソースと祖父母リソースが必要です。ハードコードされている場合 (絶対にやらない)、form_for には次の 2 つのうちの 1 つがあります。

<%= form_for [:galleries, :photos, @commetns] do |f| %>

また

<%= form_for [:blogs, :articles, @commetns] do |f| %>

多くの記事や Stackoverflow の回答に見られるように、CommentsController から親を見つけることができると仮定します。

def find_medical_loggable
  params.each do |name, value|
    if name =~ /(.+)_id$/
      return $1.classify.constantize.find(value)
    end
  end
end

どうすれば祖父母を見つけて、これらすべてを form_for ヘルパーに入れることができるでしょうか?

よろしくお願いします!

4

0 に答える 0