控制器中的动作方法

时间:2013-11-11 11:52:11

标签: ruby-on-rails ruby-on-rails-4

我有一个包含动作的控制器:

class VotesController < ApplicationController

    def action_1
        @user = User.find_by(uid: params[:uid])
        @user.votes.pluck(:author_uid).delete(current_user.uid)
        current_user.user_votes.pluck(:recipient_uid).delete(@user.uid)
        redirect_to root_url
    end

end

我在视图文件中调用它时应该使用哪种方法:

= link_to 'Dislike', { controller: "votes", action: "action_1", uid: friend.uid }, method: "WHICH???"

谢谢!

3 个答案:

答案 0 :(得分:0)

我们在rails 3中使用的方法相同。即&#39; GET&#39; 在rails 4中,只有使用方法&#39; PATCH&#39;更改操作才会更改。和&#39; PUT&#39;也在工作。

答案 1 :(得分:0)

您需要让rails路由器知道您可以访问控制器操作。因此,您需要在路径文件中为其创建条目,以便在视图中访问它。

类似的东西:

resources :votes do
  get 'action_1', on: :collection
end

或其他类型的操作,具体取决于其目的(请参阅REST methods

然后,您可以在观看中使用action_1_votes_url(uid: friend.uid)action_1_votes_path(uid: friend.uid)

答案 2 :(得分:0)

你有专门用于投票资源的VotesController,action_1的目的是从这样的资源中删除。因此,无需创建自定义操作名称。

此案例的最佳操作名称为delete

然后链接方法也是delete