簡體   English   中英

如何在rails中使用link_to獲得參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM