0

そのため、映画のレビューを投稿するユーザーのために、アプリにレビュー モデルがあります。個々の映画の Show ビューで、新しい Review のフォームをレンダリングしています。ただし、空のレビューを送信してエラーがページに表示されることを確認しようとすると、表示されません。私は何が間違っているのでしょうか?

私のレビューモデル:

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 %>
4

1 に答える 1

2

#create メソッドからリダイレクトすると、エラーが失われます... に変更します

if @review.save
  flash[:success] = "Review created!"
  redirect_to movie_path(@review.movie)
else
  render :new
end
于 2012-08-03T16:05:12.670 に答える