我的用户有评论,评论可能是消极和积极的 现在我希望为其他用户显示正面和负面评论 users_controllers.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@reviews = Review.where(for_user_id: @user, negative: false)
@reviews = @reviews.where(negative: params[:negative]) if params[:negative].present?
@reviews = @reviews
end
end
和我的看法 视图/用户/ show.html.erb
<%= link_to 'Negative reviews', user_path(negative: true) %>
<%= link_to 'Positive reviews', user_path(negative: false) %>
<% @reviews.each do |review| %>
<li>
<div class="user_data">
<div class="user_review_left">
<%= link_to (avatar_for review.user, size: "50x50"), review.user %>
</div>
<div class="user_review_right">
<%= link_to review.user.name, review.user %>
<div class="user_post_name">
review for: <%= link_to (truncate review.post.name, length: 50), review.post %>
</div>
</div>
</div>
<div class="post_review">
<%= review.body %>
</div>
<div class="review_date">
<%= l review.created_at, :format => :my %>
</div>
</li>
<% end %>
</ul>
</div>
我如何为此代码添加链接? 如果用户链接控制器返回@reviews与params 感谢
答案 0 :(得分:1)
<%= link_to 'Negative reviews', user_path(@user, negative: true) %>
和
<%= link_to 'Positive reviews', user_path(@user, negative: false) %>
并更改您的show
方法:
def show
@user = User.find(params[:id])
@reviews = Review.where(for_user_id: @user, negative: (params[:negative] || false))
end
即使我问自己为什么你不能这样做:
def show
@user = User.find(params[:id])
@reviews = @user.reviews.where(for_user_id: @user, negative: (params[:negative] || false))
end
答案 1 :(得分:0)
您可以传递用户ID 和审核参数
link_to&#34;评论&#34;,user_path(id:@ user.id,negative:true)
答案 2 :(得分:0)
正如coorase所说,在args的末尾添加一个参数将起作用。
<%= link_to 'Negative reviews', user_path(@user, negative: true) %>
会创建一个网址:root / users /:id?negative = true
如果您在处理此问题的控制器操作内部进行调试并评估'params'的值,您将看到如下内容:
{"negative"=>"true", "controller"=>"root", "action"=>"index"}
这是你的params哈希,它意味着
params[:negative] ==> true
(如果您没有使用好的调试器,我建议获取'pry'gem并在控制器操作中插入'binding.pry')
请更具体地解释为什么此输出不适用于您的情况,我可以帮助您制定更好的参数