当我在db中创建一个新的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,出了点问题。
也许我错过了什么。但是我找不到问题。
答案 0 :(得分:1)
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 %>
如果您已经运行了迁移(在数据库中有列),则上述操作应该可行。如果没有,则需要发送已发送的参数以及您从服务器接收的响应。
-
顺便说一句,你也想要look at how many levels you're nesting你的路线......
资源不应该嵌套超过1级。
因为您在到达guides
之前已经categories
然后keys
,所以您可能希望删除category
或guide
参数:
# config/routes.rb
resources :categories do
resources :keys
end
我认为您遇到的问题可能,您只是将[@category, @key]
传递给form_for
。相反,您还需要包含@guide
。
答案 1 :(得分:0)
忘记将extend FriendlyId
friendly_id :name, use: :slugged
添加到我的模型中。一旦它被添加,我的问题就解决了
答案 2 :(得分:0)