我正在写我的一个项目博客。我是一个使用Rails的新手开发人员..。
我安装了一个弹射宝石,然后为auth安装了设计宝石。我认为这是一个错误,但我不知道到底发生了什么。我可以让post显示在我的索引视图上,但是当我试图单击到show视图的链接时,它会出现以下错误.救命啊!
下面是我的控制器,路线和型号..。
我不断犯的错误是
NoMethodError in BlogsController#show 大小写过滤器当符号lambda {区目标,_,&blk \ target.send过滤器,&blk}当字符串l= eval "lambda {颇具值#{ filter } }“时,lambda {x目标,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模型
class Blog < ApplicationRecord
extend FriendlyId
friendly_id :name, use: :slugged
belongs_to :user
end发布于 2017-08-15 21:21:09
看起来,您正在使用友好的id gem,请确保您根据gem readme正确地配置了您的博客模型,并运行迁移,以便将段塞字段包含到模型中。
此外,如果您有以前的记录没有段塞,打开您的rails控制台并运行:
Blog.find_each(&:save)https://stackoverflow.com/questions/45701613
复制相似问题