2013-03-04 50 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