【发布时间】:2014-06-12 11:15:08
【问题描述】:
我正在尝试为各种模型实施投票:角色模型、宇宙模型。我通过单个 DRY 渲染部分在他们各自的节目模板上有一些投票按钮。这意味着当我将该模型传递给创建投票记录的控制器逻辑时,我需要使该模型的部分不可知。
所以是的,我想知道是否可以将这种鸭子类型的变量传递给投票控制器,而不是在每个角色和宇宙控制器中重复投票创建逻辑。
如何使用路径助手、部分投票和投票控制器进行这种鸭子类型变量传递?还是应该在每个可投票模型中重复代码?
仅供参考:当然,这两个模型的投票是多态的。我正在使用acts_as_votable gem https://github.com/ryanto/acts_as_votable
_vote.html.haml
.vote-comment-buttons
= link_to image_tag("upvote.png"), votes_upvote_path(), method: :post, remote: true
%span=# @comment.get_upvotes.sum(:vote_weight)
= link_to image_tag("downvote.png"), votes_downvote_path(), method: :post, remote: true
^ 我是否将鸭子类型变量传递给路径?如果是,我如何/在哪里定义鸭子类型变量?
(注意:我正在尝试通过 AJAX 投票,但请随意忽略与 ajax 相关的代码,例如 remote: true)
character.rb
class Character < ActiveRecord::Base
acts_as_votable # creates a polymorphic association with votes
end
universe.rb
class Universe < ActiveRecord::Base
acts_as_votable # creates a polymorphic association with votes
end
votes_controller.rb
class VotesController < ApplicationController
before_action :check_if_voted(@votable)
def upvote
#votable.vote_up current_user
end
def downvote(votable)
#votable.vote_down current_user
end
end
在动作上有参数是否有效?还是只使用 params[]?
【问题讨论】:
标签: ruby-on-rails helper polymorphism