没有使用友好 ID rails 添加 slug
No slug being added with friendly id rails
当我在数据库中创建新的 category_item_key 时,未将 slug 添加到 slug 列。
这是我的代码
迁移文件
class AddSlugToCategoryItemKeys < ActiveRecord::Migration
def change
add_column :category_item_keys, :slug, :string
add_index :category_item_keys, :slug, unique: true
end
end
category_item_key 控制器
def new
@guide = Guide.friendly.find(params[:guide_id])
@category = Category.friendly.find(params[:category_id])
@key = Category.friendly.find(params[:category_id]).category_item_keys.new
end
def create
@guide = Guide.friendly.find(params[:guide_id])
@category = Category.friendly.find(params[:category_id])
@key = Category.friendly.find(params[:category_id]).category_item_keys.new(key_params)
if @key.save
flash[:info] = "Key added succesfully!"
redirect_to @guide
else
render 'new'
end
end
private
def key_params
params.require(:category_item_key).permit(:name, :slug)
end
new.html.erb
<%= form_for([@category, @key], url: category_item_keys_create_path) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name, "Key name" %>
<%= f.text_field :name %>
<%= f.submit "Next" %>
<% end %>
创建新指南或类别友好 ID 时效果很好,添加了 slug。但是 category_item_key 出了点问题。
也许我遗漏了什么。但是我找不到问题。
def new
@guide = Guide.find params[:guide_id]
@category = Category.find params[:category_id]
@key = @category.category_item_keys.new
end
def create
@guide = Guide.find params[:guide_id]
@category = Category.find params[:category_id]
@key = @category.category_item_keys.new key_params
if @key.save
redirect_to @guide, notice: "Key added succesfully!"
else
render 'new'
end
end
private
def key_params
params.require(:category_item_key).permit(:name)
end
--
<%= form_for [@guide, @category, @key] do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name, "Key name" %>
<%= f.text_field :name %>
<%= f.submit "Next" %>
<% end %>
如果您运行 进行了迁移(数据库中有列),则以上内容应该有效。如果没有,您需要 post 发送的参数,以及您从服务器收到的响应。
--
顺便说一句,您还需要 look at how many levels you're nesting 您的路线...
Resources should never be nested more than 1 level deep.
因为在到达 keys
之前你有 guides
然后 categories
,你可能想要删除 category
或 guide
参数:
# config/routes.rb
resources :categories do
resources :keys
end
我认为您遇到的问题是 可能 您只是将 [@category, @key]
传递给 form_for
。相反,您还需要包含 @guide
。
忘记将 extend FriendlyId
friendly_id :name, use: :slugged
添加到我的模型中。添加后我的问题就解决了
特此通知
您可以重写模型中的 to_params 方法来生成您的 uniq slug
to_params
#for instance
your_column + your_column
end
当我在数据库中创建新的 category_item_key 时,未将 slug 添加到 slug 列。
这是我的代码
迁移文件
class AddSlugToCategoryItemKeys < ActiveRecord::Migration
def change
add_column :category_item_keys, :slug, :string
add_index :category_item_keys, :slug, unique: true
end
end
category_item_key 控制器
def new
@guide = Guide.friendly.find(params[:guide_id])
@category = Category.friendly.find(params[:category_id])
@key = Category.friendly.find(params[:category_id]).category_item_keys.new
end
def create
@guide = Guide.friendly.find(params[:guide_id])
@category = Category.friendly.find(params[:category_id])
@key = Category.friendly.find(params[:category_id]).category_item_keys.new(key_params)
if @key.save
flash[:info] = "Key added succesfully!"
redirect_to @guide
else
render 'new'
end
end
private
def key_params
params.require(:category_item_key).permit(:name, :slug)
end
new.html.erb
<%= form_for([@category, @key], url: category_item_keys_create_path) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name, "Key name" %>
<%= f.text_field :name %>
<%= f.submit "Next" %>
<% end %>
创建新指南或类别友好 ID 时效果很好,添加了 slug。但是 category_item_key 出了点问题。
也许我遗漏了什么。但是我找不到问题。
def new
@guide = Guide.find params[:guide_id]
@category = Category.find params[:category_id]
@key = @category.category_item_keys.new
end
def create
@guide = Guide.find params[:guide_id]
@category = Category.find params[:category_id]
@key = @category.category_item_keys.new key_params
if @key.save
redirect_to @guide, notice: "Key added succesfully!"
else
render 'new'
end
end
private
def key_params
params.require(:category_item_key).permit(:name)
end
--
<%= form_for [@guide, @category, @key] do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name, "Key name" %>
<%= f.text_field :name %>
<%= f.submit "Next" %>
<% end %>
如果您运行 进行了迁移(数据库中有列),则以上内容应该有效。如果没有,您需要 post 发送的参数,以及您从服务器收到的响应。
--
顺便说一句,您还需要 look at how many levels you're nesting 您的路线...
Resources should never be nested more than 1 level deep.
因为在到达 keys
之前你有 guides
然后 categories
,你可能想要删除 category
或 guide
参数:
# config/routes.rb
resources :categories do
resources :keys
end
我认为您遇到的问题是 可能 您只是将 [@category, @key]
传递给 form_for
。相反,您还需要包含 @guide
。
忘记将 extend FriendlyId
friendly_id :name, use: :slugged
添加到我的模型中。添加后我的问题就解决了
特此通知
您可以重写模型中的 to_params 方法来生成您的 uniq slug
to_params
#for instance
your_column + your_column
end