【问题标题】:rails link_to - pass hash of values to controller actionrails link_to - 将哈希值传递给控制器​​动作
【发布时间】:2017-03-07 17:27:21
【问题描述】:

我已经根据哈希中的条件检索了一些记录 - @special_products。现在我想将哈希传递给同一个控制器的非静态操作(:特殊)/,以便我可以查看产品。

我已经尝试过了,但是如何通过 link_to 传递哈希以及如何在同一 products_controller 中的action: special? 中检索该值?非常感谢。

products_controller.rb

  def show
   @special_products = Product.by_company
  end

show.html.erb

<%= link_to "Special Products", special_path(:anchor => "#{@special_products}") %>

【问题讨论】:

    标签: ruby-on-rails link-to


    【解决方案1】:
    1. 如果您点击 Products 控制器的显示操作,您应该显示产品

    2. 如果您想以特殊方式展示产品,请使用相同的 show 操作,但为其呈现不同的视图。

      def show
        @product = Product.find(params[:id])
        render @product.special? ? 'special_show' : 'show'
      end
      
    3. 如果您想以不同的方式(过滤集合)列出某些产品,您需要使用索引。例如。 products#index 操作。

      def index
        @products = Products.not_special
        @special_products = Products.way_special
      end
      
      # app/views/products/index.html.erb
      Special Products:
      <%= @special_products.pluck(:name).to_sentence %>
      
    4. 最后,请注意您传递给link_to 的参数最终会出现在链接的网址中,这意味着您的示例link_to 将在href 属性。

    【讨论】:

    • 考虑到 point(2) 即使我渲染 special_show.html.erb,我仍然没有哈希中的记录列表。基本上,我在展示中查看 1 个产品,下面有一个链接,上面写着“查看该公司的其他产品”,所以即使在呈现“特殊展示”之后,我也丢失了当前产品的 id,以便显示相同的其他产品公司。我不确定 link_to 是否可以提供帮助。现在关于第 (3) 点,@special_products 包含所有选定的记录,因此 to_sentence 将显示逗号分隔....不确定,如果我的理解不同。
    • @Means 如果您在原始问题中解释了您想要做什么,我会很乐意以一种满足您需求的方式回答。你没有,所以我不可能知道。请提出一个新问题。
    • 我实际上是 Rails 的新手,很抱歉,我无法说清楚。这是另一个问题-stackoverflow.com/questions/42656720/…。谢谢,如果你能给我一些想法。
    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多