我正在使用名为 Recommendable 的 David Celis gem 在我的 rails 应用程序中实现一个类似的系统。我已经在控制台中完成了所有工作,但我无法获得正确的路线,并且出现“没有路线匹配 [GET]”/categories/1/posts/1/like”错误。
我的模型中有以下内容:
class Category < ActiveRecord::Base
has_many :posts, :dependent => :destroy
extend FriendlyId
friendly_id :name, use: :slugged
end
class Post < ActiveRecord::Base
belongs_to :category
end
在我的后控制器中,我有:
class PostsController < ApplicationController
before_filter :authenticate_user!
before_filter :get_category
def like
@post = Post.find(params[:id])
respond_to do |format|
if current_user.like @post
else
flash[:error] = "Something went wrong! Please try again."
redirect_to show_post_path(@category, @post)
end
end
end
end
在我的路线中,我有:
resources :categories do
resources :posts do
put :like, :on => :member
end
end
match 'categories/:category_id/posts/:id', :to => 'posts#show', :as => 'show_post'
有人可以指出我的错误吗?我可以让 PUT 工作,但我不知道 GET 错误来自哪里,因为如果用户喜欢某个帖子时发生错误,我会尝试重定向回帖子。先感谢您。
编辑:
在我看来,我有:
- title "#{@post.class}"
%p#notice= notice
%p
%b Title:
= @post.title
%p
%b Description:
= @post.description
%p
%b Likes:
= @post.liked_by.count
= link_to 'Edit', edit_category_post_path(@post)
\|
= link_to 'Back', category_posts_path
\|
= link_to 'Like', like_category_post_path(@post)