Ruby on rails 链接到的多态行为
我在这里面临着一个棘手的挑战,也许你们中的一个可以在这方面帮助我。没什么太难的,我只是不知道该怎么走。下面是: 我有两种型号:Ruby on rails 链接到的多态行为,ruby-on-rails,ruby-on-rails-3,polymorphism,Ruby On Rails,Ruby On Rails 3,Polymorphism,我在这里面临着一个棘手的挑战,也许你们中的一个可以在这方面帮助我。没什么太难的,我只是不知道该怎么走。下面是: 我有两种型号: 活动和评论 我在这里使用MongoID和一个著名的gem来处理投票(喜欢)。它只负责在活动或评论中嵌入投票模型 这意味着我没有像那样的模型 我多么希望能够“喜欢”一项“活动”和/或“评论”。我的猜测是使用一个名为LikesController的控制器,使用两种方法来喜欢或不喜欢某个项目 我会有这样的路线: resources :activities, :only =&
活动
和评论
我在这里使用MongoID和一个著名的gem来处理投票(喜欢)。它只负责在活动
或评论
中嵌入投票模型
这意味着我没有像那样的模型
我多么希望能够“喜欢”一项“活动”和/或“评论”。我的猜测是使用一个名为LikesController
的控制器,使用两种方法来喜欢或不喜欢某个项目
我会有这样的路线:
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
现在我希望在一些视图页面中有一个“like”/“inspect”链接,指向相应操作(create=>like;destroy=>inspect)上的likescoller
唯一的问题是,我不知道如何使用好的路径创建指向
的链接。
以下是我到目前为止的情况:
link_到'Like',eval(“#{item.class.name.downcase}_likes_path(item)”,:method=>'post'
link_to'inference,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
,除了在每个项目的控制器中使用复制方法来处理“喜欢”和“不喜欢”之外。也许我错了
谢谢。我想在这里找一个视图助手
def likehelper(likable)
if likable.is_a? Activity
# return activitycommentpath..
...
end
然后在您的视图中链接到'Like',likehelper(item)
,而与不同之处也一样。如果其他对象变得“讨人喜欢”,您所要做的就是为您的助手添加一个新的“规则”。是的,我也有这个想法,我只是不喜欢嵌套的If-ELSE条件^^^^但我想可能您没有选择权>