首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入和编辑用户评论

插入和编辑用户评论
EN

Stack Overflow用户
提问于 2013-03-05 03:00:14
回答 2查看 143关注 0票数 0

我有一个评论系统,可以让用户为电影创建评论,如果他们试图为同一部电影添加另一条评论,它会更新他们之前的评论。更新是通过审查控制器中的create方法完成的。

我正试着在电影放映页面中使用它。目前,用户可以通过在电影的放映页面上选择“添加评论”选项来添加评论。如果他们之前通过选择“添加评论”为该特定电影撰写了评论,则他们之前的评论仍会更新。我想要做的是显示一个按钮,如果他们以前写过评论,就显示“编辑评论”,如果没有,就显示“添加评论”。有什么想法吗?

查看控制器-创建:

代码语言:javascript
复制
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 

查看控制器-新增:

代码语言:javascript
复制
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

电影放映页面:

代码语言:javascript
复制
<%= button_to 'Add Review',{controller: 'reviews', action: 'new', id: @film.id },
{class: "button-to"}%>
EN

回答 2

Stack Overflow用户

发布于 2013-03-05 03:17:40

您可以执行如下操作:

在控制器的show操作中:

代码语言:javascript
复制
 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

代码语言:javascript
复制
 <% 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 %>
票数 2
EN

Stack Overflow用户

发布于 2013-03-05 04:03:18

代码语言:javascript
复制
<% if @current_user_review.blank?%>
   <%= link_to_function("Create New Review", "$('create').toggle()") %>
<%else%>
   <%= link_to_function("To edit Review, Click here", "$('Edit').toggle()") %>
代码语言:javascript
复制
<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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15209014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档