2011-03-02 1 views
-1
내가이 오류가

:간단한 형태의 오류 : MySQL의 : 오류 : 열 'cached_slug'내 kategori 양식을 제출할 때

#이

을 만들 KategorisController에

액티브 :: StatementInvalid MySQL의 :: 오류 : 열 ' cached_slug는 'null 일 수 없습니다 : 여기

<%= simple_form_for(@kategori) do |f| %> 

    <%= f.input :name %> 
    <%= f.button :submit %> 
<% end %> 

내 컨트롤러 : 여기

kategoris 삽입 반은 내 양식이다

# GET /kategoris/new.xml 
    def new 
    @kategori = Kategori.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.xml { render :xml => @kategori } 
    end 
    end 

    # GET /kategoris/1/edit 
    def edit 
    @kategori = Kategori.find(params[:id]) 
    end 

    # POST /kategoris 

    # POST /kategoris.xml 
    def create 
    @kategori = Kategori.new(params[:kategori]) 

    respond_to do |format| 
     if @kategori.save 
     format.html { redirect_to(@kategori, :notice => 'Kategori was successfully created.') } 
     format.xml { render :xml => @kategori, :status => :created, :location => @kategori } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @kategori.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

friendly_id로 ID 이름을 변경해야합니까?

답변

0

모델을 저장하기 전에 모델에 필드를 채워야하는 것 같습니다. 당신은 당신이 필요로하는 어떤 slugification 시스템을 사용할 수 있습니다

class Kategori < ActiveRecord::Base 
    before_save :assign_cached_slug, :unless => :cached_slug? 

protected 
    def assign_cached_slug 
    self.cached_slug = self.title.gsub(/\s+/, '_').gsub(/[^\w\-]/, '') 
    end 
end 

: 일반적으로이 같은 패턴을 사용할 수 있습니다. 여기에 주어진 것은 단지 예일뿐입니다.

0

데이터베이스의 cached_slug 열이 데이터베이스 수준에서 Null 허용되지 않는 것 같습니다. 따라서 오류가 발생하고 있습니다. Tadman의 코드를 사용하면이 문제를 해결할 수 있습니다.

관련 문제