gpt4 book ai didi

ruby-on-rails - Rails Friendly Id - 找不到 id=electronics 的类别

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:05 26 4
gpt4 key购买 nike

我正在尝试使用 Ruby on Rails 4.0(已经使用过这个令人难以置信的框架的旧版本)开发一个应用程序,但我遇到了一些麻烦。

我安装了 FriendlyID gem,我认为一切正常,但是当我尝试测试我的应用程序时收到错误。

如果我转到 http://0.0.0.0:3000/categories/1,这会起作用。但是,当我单击此页面中的“编辑”,或者只是转到 http://0.0.0.0:3000/categories/electronics(这是 ID 为 1 的类别的缩略名称)时,我收到以下错误:

Couldn't find Category with id=electronics
# Use callbacks to share common setup or constraints between actions.
def set_category
@category = Category.find(params[:id]) #Here's pointed the error
end

类别模型:

class Category < ActiveRecord::Base 

extend FriendlyId
friendly_id :name, use: :slugged

# Validations
validates_uniqueness_of :name, :case_sensitive => false

end

类别 Controller :

(由脚手架生成用于测试目的)

class CategoriesController < ApplicationController
before_action :set_category, only: [:show, :edit, :update, :destroy]

# GET /categories
# GET /categories.json
def index
@categories = Category.all
end

# GET /categories/1
# GET /categories/1.json
def show
end

# GET /categories/new
def new
@category = Category.new
end

# GET /categories/1/edit
def edit
end

# POST /categories
# POST /categories.json
def create
@category = Category.new(category_params)

respond_to do |format|
if @category.save
format.html { redirect_to @category, notice: 'Category was successfully created.' }
format.json { render action: 'show', status: :created, location: @category }
else
format.html { render action: 'new' }
format.json { render json: @category.errors, status: :unprocessable_entity }
end
end
end

# PATCH/PUT /categories/1
# PATCH/PUT /categories/1.json
def update
respond_to do |format|
if @category.update(category_params)
format.html { redirect_to @category, notice: 'Category was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @category.errors, status: :unprocessable_entity }
end
end
end

# DELETE /categories/1
# DELETE /categories/1.json
def destroy
@category.destroy
respond_to do |format|
format.html { redirect_to categories_url }
format.json { head :no_content }
end
end

private
# Use callbacks to share common setup or constraints between actions.
def set_category
@category = Category.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def category_params
params.require(:category).permit(:name)
end
end

迁移:##

(我在创建Category表后添加了friendlyId,但我觉得还可以)

class AddColumnToCategory < ActiveRecord::Migration
def change
add_column :categories, :slug, :string
add_index :categories, :slug, unique: true
end
end

路线:

resources :categories

希望你能帮助我。 我在 Rails 4.0 中做错了什么?

最佳答案

Check the doc , friendly id stopped hacking find 方法(为了更大的利益),你现在必须做的:

# Change Category.find to Category.friendly.find in your controller
Category.friendly.find(params[:id])

关于ruby-on-rails - Rails Friendly Id - 找不到 id=electronics 的类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20314927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com