简体   繁体   中英

Passing params in a helper

I have, on my Miniature model view page the following code

<%= content_setmini_links_with_quantity(@miniature) %>

It refers to this miniatures_helper method

def content_setmini_links_with_quantity(miniature)
  miniature.reverse_contents.map{|content| content_setmini_link_with_quantity(content)}.join(' ').html_safe
end

Which in turn references this miniatures_helper method

def content_setmini_link_with_quantity(content)
  string = (tag "td"), (link_to top_pic(content.setmini_id), content.setmini), (link_to content.setmini.name, content.setmini)
  string << " x#{content.quantity}" if content.quantity.present?
  return string
end

This is supposed to reference the final miniatures_helper method

def top_pic
  @miniature = Miniature.find(params[:setmini_id])
  if @miniature.collections.first.photo != nil 
    image_tag(@miniature.collections.first.photo.url(:icon), :retina => true, :class => "curvediconminiset")
  else
    image_tag("https://system/stock/blank.gif", :retina => true, :class => "curvediconminiset")
  end
end

but I can't work out how to call top_pic correctly.
As far as I can see in content_setmini_link_with_quantity(content) the only param available is content. Content.setmini_id is the param I want to use to find the @miniature to display but I can't get it to work.

Any help much appreciated.

You are calling

top_pic(content.setmini_id)

But your top_pic method definition does not have a parameter defined.

Change the definition and first line of top_pic to

def top_pic(setmini_id)
  @miniature = Miniature.find(setmini_id)

and forget about using params in a helper.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM