私はここで厄介な挑戦に直面しています。あまりにも難しいことはありません、私はちょうどいい道のりを知りません。ここに来る:私は票(同類)を処理するために有名な宝石とここMongoIDを使用していlink_toを使った多態的な振る舞い
Activity
とComment
:私は2つのモデルを持っている
。投票モデルをActivity
またはComment
に埋め込むだけです。
これは私がLike
モデルを持っていないことを意味します。
「アクティビティ」および/または「コメント」を「好き」にすることができることを、どのようにしたいと思いますか。私の推測では、LikesController
という名前のコントローラを1つ使用して、アイテムを好き嫌いする方法が2つあります。ここで
resources :activities, :only => [] do
resources :comments, :only => [:create, :destroy]
resources :likes, :only => [:create, :destroy]
end
resources :comments, :only => [] do
resources :likes, :only => [:create, :destroy]
end
が
bundle exec rake routes
から与えられたルートです:
activity_comments POST /activities/:activity_id/comments(.:format) comments#create
activity_comment DELETE /activities/:activity_id/comments/:id(.:format) comments#destroy
activity_likes POST /activities/:activity_id/likes(.:format) likes#create
activity_like DELETE /activities/:activity_id/likes/:id(.:format) likes#destroy
comment_likes POST /comments/:comment_id/likes(.:format) likes#create
comment_like DELETE /comments/:comment_id/likes/:id(.:format) likes#destroy
は今、私は「のように」/「とは異なり、」リンクを持っていると思い
私はその後、ルートのこの種を持っているでしょういくつかのビューページでは、対応するアクション(create => like; destroy => unlike)のLikesController
を指しています。
唯一のことは、良いパスでlink_to
を作成する方法がわかりません。ここ は、私がこれまで持っているものです。
link_to 'Like', eval("#{item.class.name.downcase}_likes_path(item)"), :method => 'post'
link_to 'Unlike, eval("#{item.class.name.downcase}_likes_path(item)"), :method => 'destroy'
は、誰も私にクリーンな方法でそれを行う方法についてのヒントを与えることができますか?ここで
は私のモデルです:
class Activity
include Mongoid::Document
include Mongoid::Timestamps
include Mongo::Voteable
has_many :comments, :as => :item
belongs_to :subject, :polymorphic => true
embeds_one :user
validates :user, :presence => true
voteable self, :up => +1, :down => -1
end
class Comment
include Mongoid::Document
include Mongoid::Timestamps
include Mongo::Voteable
belongs_to :item, :polymorphic => true
embeds_one :user
field :text, :type => String, :default => nil
validates :text, :presence => true
validates :user, :presence => true
attr_accessible :text, :user
voteable self, :up => +1, :down => -1
end
あなたはFUTURオブジェクトの多くは、私はそれぞれの内部で重複メソッドを持つ横にLikesController
に行くことを選択した理由です、また、「好感の持てる」ことができることを心に留めておく必要がありアイテムのコントローラは「好き」と「軽い」を処理します。たぶん私は間違っています ?
ありがとうございます。
はい、私はこのアイデアも持っていましたが、入れ子にされたIF ELSE条件は好きではありません^^しかし、おそらく選択肢がありません><。私は他の人たちも同様に答えるのを待つつもりだ。 –