2017-03-07 91 views
-1

我已经根据散列条件检索了一些记录 - @special_products。现在我想把散列传递给同一个控制器的非宁静动作(:spe​​cial),以便我可以查看这些产品。rails link_to - 将值的散列值传递给控制器​​动作

我试过这个,但link_to如何传递哈希值以及应该如何在action: special?中找到这个值在相同的products_controller中?非常感谢。

products_controller.rb

def show 
    @special_products = Product.by_company 
    end 

show.html.erb

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

回答

1
  1. 如果你打的产品控制器的表演动作,你应该呈现出产品

  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结束了在所链接的URL,这意味着你的榜样link_to将会呈现在href属性类似#<Array []>

+0

考虑点(2)即使我渲染special_show.html.erb,我仍然没有哈希中的记录列表。基本上,我正在查看展示中的1款产品,并且下面有一个链接显示“查看该公司的其他产品”,因此即使在呈现“特别展示”之后,我也丢失了当前产品的ID,以便展示其他产品公司。我不确定link_to是否可以提供帮助。现在关于点(3)@special_products包含所有选定的记录,所以to_sentence将显示逗号分隔....不确定,如果我有不同的理解。 – Means

+0

@Means如果你已经解释了你在原始问题中想要做的事情,我会很高兴地回答你的需求。你没有,所以我不可能知道。请问一个新问题。 – coreyward

+0

我实际上对铁轨和道歉很陌生,我无法说清楚。这里有另一个问题 - http://stackoverflow.com/questions/42656720/rails-link-to-pass-id-from-show-to-another-controller-action。谢谢,如果你能给我一些想法。 – Means