[英]How to get params with link_to in rails?
我的用戶有評論,評論可能是正面和負面的,現在我想為其他用戶顯示正面和負面的評論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
和我的觀點views / users / 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謝謝
<%= 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
您可以傳遞用戶標識和審閱參數
link_to“評論”,user_path(id:@ user.id,否定:true)
正如coorase所說,將參數附加到args的末尾將起作用。
<%= link_to 'Negative reviews', user_path(@user, negative: true) %>
將創建一個URL:root / users /:id?negative = true
如果您在處理該問題的控制器動作中進行調試並評估“ params”的值,您將看到類似以下內容:
{"negative"=>"true", "controller"=>"root", "action"=>"index"}
這是你的參數哈希,這意味着
params[:negative] ==> true
(如果您使用的調試器不好,我建議您獲取'pry'gem並在控制器操作中插入'binding.pry')
請更具體地說明為什么此輸出不適用於您的情況,我也許可以幫助您制定更好的參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.