插入和编辑用户评论
问题描述:
我有一个评论系统,可以让用户为影片创建评论,如果他们试图为同一部影片添加另一个评论,它会更新他们之前的评论。更新通过审阅控制器中的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"}%>
答
你可以这样做如下:
在show
动作控制器:
def show
@current_user_review = Review.find_by_film_id_and_name(film_id, user_name)
#your stuff
end
def edit
@review = Review.find(params[:id])
render 'new'
end
在view
:
<% if @current_user_review.blank? %>
<%= link_to 'Add Review',new_review_path(film_id: @film.id),
{class: "button-to"} %>
<% else %>
<%= link_to 'Edit Your Review', edit_review_path(@current_user_review), {class: "button-to"} %>
<% end %>
答
<div id="create" style="display: none;">
<%= render :partial => "new" %>
</div>
<div id="Edit" style="display: none;">
<%=render :partial => edit %> # The new partial can also be be used here.
</div>
TBH它可能会更好地说:“你已经审阅本。如果您想修改当前评论,请点击这里“ – Alfo 2013-03-04 19:05:20