我一直在使用acts_as_votable gem,它适用于图片,评论和活动等等。但我希望能够选择其他用户。
阅读文档我可以通过向模型添加acts_as_votable和acts_as_voter来实现此目的。
问题在于我不知道如何调整我的路线以将其考虑在内,因为它的配置与其他路线略有不同。
在开发过程中,配置文件页面显示在localhost:3000/@user.profile_name
路线为get '/:id', to: 'profiles#show', as: 'profile'.
使用acts_as_votable,路线通常会像:
resources :comments do
member do
put "like", to: "comments#upvote"
put "dislike", to: "commentss#downvote"
end
end
但是,我如何以类似的方式调整现有路线?
如果我使用
resources :profiles, only: :show, as: 'profile' do
put 'like', on: :member
put 'dislike', on: :member
end
这将作为localhost:3000/profiles/@user.profile_name/like。
这不适用于以下内容:
def like
@user = User.find_by_profile_name(params[:id])
@user.liked_by current_user
redirect_to profile_path(@user)
end
def dislike
@user = User.find_by_profile_name(params[:id])
@user.unliked_by current_user
redirect_to profile_path(@user)
end
或者喜欢/不喜欢的按钮。
<%= link_to dislike_profile_path(@user), method: :put, class: "btn btn-success btn-xs" do %>
<i class="fa fa-heart-o"></i> Remove Hype
<% end %>
<%= link_to like_profile_path(@user), method: :put, class: "btn btn-success btn-xs" do %>
<i class="fa fa-heart"></i> Hype
<% end %>
答案 0 :(得分:1)
resources :profiles, only: :show, path: '/' do
member { put :like, :dislike }
end
您的链接应该正常运行
注意:在浏览器中键入路径,它将通过get,而不是put来完成,所以它不会起作用,但我猜你知道这一点: - )