2013-03-04 51 views
0

我有一个评论系统,可以让用户为影片创建评论,如果他们试图为同一部影片添加另一个评论,它会更新他们之前的评论。更新通过审阅控制器中的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"}%> 
+1

TBH它可能会更好地说:“你已经审阅本。如果您想修改当前评论,请点击这里“ – Alfo 2013-03-04 19:05:20

回答

2

你可以这样做如下:

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 %> 
+1

= link_to'添加评论',new_review_path(film_id:@ film.id) = link_to'编辑您的视图,edit_review_path(@current_user_review) – Bijan 2013-03-04 19:34:22

+0

您可以使用路线路线作为Bijan提问 – codeit 2013-03-04 19:36:52

+0

我不断地同时在展示页面上添加审阅和编辑审阅选项。不确定'@current_user_review'是否正常工作 – 2013-03-04 20:05:00

0
<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> 
+0

这个'link_to_function'做什么? – codeit 2013-03-04 20:16:05

+0

它创建一个onclick事件 - http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html – Ramya 2013-03-04 21:23:53