私は、ユーザーが映画のレビューを作成できるレビューシステムを持っています。同じ映画に別のレビューを追加しようとすると、前のレビューが更新されます。更新はcreate
、レビューコントローラーのメソッドを介して行われます。
私はこれを映画のショーページで使おうとしています。現在、ユーザーは常にそこにある映画のショーページで「レビューを追加」オプションを選択することでレビューを追加できます。以前に「レビューを追加」を選択してその特定の映画のレビューを書いたことがある場合は、以前のレビューが引き続き更新されます。私がやりたいのは、以前にレビューを書いたことがある場合は「レビューを編集」、まだ書いたことがない場合は「レビューを追加」というボタンを表示することです。何か案は?
レビューコントローラー-作成:
def create
@review = Review.find_or_create_by_film_id_and_name(params[:review][:film_id],
User.find(session[:user_id]).name)
@review.update_attributes(params[:review])
if @review.save
film = Film.find(@review.film.id)
redirect_to film, notice: 'Your review was successfully added.'
else
render action: "new"
end
end
レビューコントローラー-新規:
def new
if logged_in?
@review = Review.new(:film_id => params[:id], :name =>
User.find(session[:user_id]).name)
session[:return_to] = nil
else
session[:return_to] = request.url
redirect_to login_path, alert: " 'You need to login to write a review' "
end
end
映画ショーページ:
<%= button_to 'Add Review',{controller: 'reviews', action: 'new', id: @film.id },
{class: "button-to"}%>