2013-06-25 197 views
0

由於某種原因,我的驗證錯誤消息未顯示在窗口上。它是否與twitter-bootstrap有關?我記得看過一些視頻教程,但不幸現在找不到它。錯誤消息未顯示

_form部分記錄的

<%= form_for [@estate,@record] do |f| %> 
     <% if @record.errors.any? %> 
     <div id="error_explanation"> 
      <h2><%= pluralize(@record.errors.count, "error") %> prohibited this record from being saved:</h2> 

      <ul> 
      <% @record.errors.full_messages.each do |msg| %> 
      <li><%= msg %></li> 
      <% end %> 
      </ul> 
     </div> 
     <% end %> 
    ....... 
    ...... 
    ... 
    <% end %> 

我的記錄模式

validates :E1, presence: true 
     validates :E2, presence: true 
     validates :E3, presence: true 
     validates :E4, presence: true 
     validates :R1, presence: true 
     validates :R2, presence: true 
     validates :R3, presence: true 
     validates :R4, presence: true 
     validates :Year, presence: true 
     validate :validation 

控制器的創建和更新方法

def create 
     @record = @estate.records.build(params[:record]) 

     respond_to do |format| 
      if @record.save 
      format.html { redirect_to [@estate,@record], notice: 'Record was successfully created.' } 
      format.json { render json: @record, status: :created, location: @record } 
      else 
      format.html { render action: "new" } 
      format.json { render json: @record.errors, status: :unprocessable_entity } 
      end 
     end 
     end 

     # PUT /records/1 
     # PUT /records/1.json 
     def update 
     @record = Record.find(params[:id]) 

     respond_to do |format| 
      if @record.update_attributes(params[:record]) 
      format.html { redirect_to [@estate,@record], notice: 'Record was successfully updated.' } 
      format.json { head :no_content } 
      else 
      format.html { render action: "edit" } 
      format.json { render json: @record.errors, status: :unprocessable_entity } 
      end 
     end 
     end 

它有什麼做這個紀錄屬於遺產和遺產有很多記錄。就像創建一個記錄我做「@record = @ estate.records.build(params [:record])」 我試着用調試器調試它,我發現當創建一個記錄時它不會進入else部分,它直接創建一條記錄而不檢查記錄模型中的驗證。

+0

bootstrap應該沒有區別,它只是一個審美圖書館 – sircapsalot

+0

你能幫我解決這個問題嗎? –

回答

0

在這種寶石http://rubygems.org/gems/dynamic_form

它會在你的視圖中顯示驗證錯誤給你看看。然後,您可以刪除代碼循環實例錯誤。

此外,無關你的問題在這裏,但我建議與重構你的代碼如下:

在你的控制器

respond_to :html, :json 

def create 
    @record = @estate.records.build(params[:record]) 
    if @record.save 
    # flash[:success]... or whatever 
    else 
    # flash[:alert]... or whatever 
    end 

    respond_with @record 
end 

# same for your update method 

爲了您的信息,您可以通過render :new

更換 render action: 'new'