我正在研究我的项目博客。我是使用Ruby on Rails的新手开发人员....
我安装了一个slug gem,然后为auth安装了devise gem。我认为这是一个auth错误,但我不知道究竟发生了什么。我可以在我的索引视图上显示帖子,但是当我尝试单击显示视图的链接时,它会显示此错误...请帮助!
以下是我的控制器,路线和型号......
我一直得到的错误是
BlogsController中的NoMethodError#show
case filter when Symbol lambda { |target, _, &blk| target.send filter, &blk } when String l = eval "lambda { |value| #{filter} }" lambda { |target, value| target.instance_exec(value, &l) } ......
我的控制器
class BlogsController < ApplicationController
before_action :set_blog, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!, only: [:new, :create, :edit, :update, :destroy]
def index
@blog = Blog.all
end
def new
@blog = Blog.new
end
def create
current_user.blogs.create(blog_params)
redirect_to blogs_path
end
def show
@blog = Blog.friendly.find(params[:id])
end
def edit
@blog = Blog.friendly.find(params[:id])
if @blog.user != current_user
return render text: 'Not Allowed', status: :forbidden
end
end
def update
@blog = Blog.friendly.find(params[:id])
if @blog.user != current_user
return render text: 'Not Allowed', status: :forbidden
end
@blog.update_attributes(blog_params)
redirect_to root_path
end
def destroy
@blog = Blog.friendly.find(params[:id])
if @blog.user != current_user
return render text: 'Not Allowed', status: :forbidden
end
@blog.destroy
redirect_to root_path
end
private
def blog_params
params.require(:blog).permit(:name, :description)
end
end
路线
Rails.application.routes.draw do
devise_for :users
resources :blogs
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root 'portfolio#index'
end
MODEL
class Blog < ApplicationRecord
extend FriendlyId
friendly_id :name, use: :slugged
belongs_to :user
end
答案 0 :(得分:0)
看起来您正在使用友好的id gem,请确保您根据gem自述文件正确配置了Blog模型并运行迁移以将slug字段包含到模型中。
此外,如果您之前没有slug的记录,请打开rails控制台并运行:
Blog.find_each(&:save)