2012-08-03 33 views
0

因此,我在我的應用程序中爲用戶留下了有關電影評論的評論模型。我正在爲每個單獨的電影在「顯示」視圖中呈現新評論的表單。但是,當我嘗試提交空白評論以檢查頁面上顯示的錯誤時,他們沒有。我可能做錯了什麼?爲什麼我的Active Record驗證無效?

我的審查模式:

class Review < ActiveRecord::Base 
    attr_accessible :content 
    belongs_to :user 
    belongs_to :movie 

    validates :user_id, presence: true 
    validates :movie_id, presence: true 
    validates :content, presence: true, length: { maximum: 1000 } 

end 

我的評論控制器:

class ReviewsController < ApplicationController 
    before_filter :signed_in_user, only: [:new, :create, :destroy] 

    def new 
    end 

    def create 

    #I'm doing this to get around the mass assignment error. 

    movie_id = params[:review].delete(:movie_id) 
    @review = current_user.reviews.build(params[:review]) 
    @review.movie_id = movie_id 

    if @review.save 
     flash[:success] = "Review created!" 
     redirect_to movie_path(@review.movie) 
    else 
     redirect_to movie_path(@review.movie) 
    end 
    end 

    def destroy 
    end 
end 

我的形式:

<%= form_for(:review, url: reviews_path) do |f| %> 

    <%= f.hidden_field :movie_id %> 
    <div class="field"> 
    <%= f.text_area :content, placeholder: "Write a new review..." %> 
    </div> 
    <%= f.submit "Submit", class: "btn btn-large btn-primary" %> 
<% end %> 

回答

2

當您重定向從#創建方法的時候,你失去了錯誤...更改爲

if @review.save 
    flash[:success] = "Review created!" 
    redirect_to movie_path(@review.movie) 
else 
    render :new 
end 
+0

但是,這將嘗試呈現新的模板的評論,我想顯示在單個電影相同的顯示視圖內的錯誤 – David 2012-08-03 16:15:58

+0

@David - 你不能重定向和這項工作。你可以使表單成爲一個遠程表單,並使用jquery替換成功/失敗的表單。這會讓你保持在你所在的同一頁面。 – 2012-08-03 18:02:38

相關問題