相关记录中的图像不会显示在索引页面上

时间:2011-05-10 21:50:16

标签: ruby-on-rails image activerecord

我有2张桌子,一张venuetypes和一张mapicons。 venuetype属于mapicon。

每个地图图标都有一个名称和一个用回形针上传的图像。

当我查看一个venuetype记录时,我使用这段代码显示了相关的mapicon:

<%= image_tag @venuetype.mapicon.mapicon.url(:mapicon) %>

我有另一个场地表,每个场地都属于一个venuetype。

然而,当我在索引页面上查看场地记录时,mapicon不显示图像,它只是显示为一个空白div,其属性在css类中设置。

这是用于尝试显示mapicon的代码:

<div id="venue_map_icon_<%= venue.id %>" style="position:absolute;" <%= image_tag (venue.venuetype.mapicon.mapicon.url(:mapicon)), :class => "mapicon" %></div>

我希望我的问题有道理,如果需要,我会尽量澄清,感谢任何帮助,非常感谢!

修改

mapicon模型

class Mapicon < ActiveRecord::Base
  has_many :venuetypes
  has_attached_file :mapicon,
    :styles => {
      :mapicon => "20x20" }
end

venuetype模型

class Venuetype < ActiveRecord::Base
  has_many :venues
  belongs_to :mapicon
  has_attached_file :icon,
    :styles => {
      :thumb=> "100x100>",
      :small  => "150x150>",
      :medium => "300x300>",
      :large =>   "400x400>" },
      :default_url => '/images/noimage.png'
end

场地模型

class Venue < ActiveRecord::Base
  attr_accessible :name, :addressline1, :addressline2, :addressline3, :addressline4, :postcode, :phonenumber, :about, :icontoppx, :iconleftpx, :area_id, :venuetype_id, :lat, :long, :venuephotos_attributes
  belongs_to :area
  belongs_to :venuetype
  has_many :reviews
  has_many :venuephotos

  accepts_nested_attributes_for :venuephotos, :allow_destroy => true

  scope :with_type, lambda { |types|
    types.present? ? where(:venuetype_id => types) : scoped }

  scope :with_area, lambda { |areas|
    areas.present? ? where(:area_id => areas) : scoped }

  def to_param
    "#{id}-#{name.gsub(/\W/, '-').downcase}"
  end
end

1 个答案:

答案 0 :(得分:1)

GAH!我想我明白了,如果是这样的话,我们就会自欺欺人......

您的观看代码混杂在一起:

&LT; div id="venue_map_icon_<%= venue.id %>" style="position:absolute;" <%= image_tag (venue.venuetype.mapicon.mapicon.url(:mapicon)), :class => "mapicon" %></div>

缺少结束“&gt;”在第一个div上,以及image_tag调用上的右括号是错误的。它应该在“mapicon”之后,如下:

<div id="venue_map_icon_<%= venue.id %>" style="position:absolute;">
<%= image_tag(venue.venuetype.mapicon.mapicon.url(:mapicon), :class => "mapicon") %>
</div>

除非“mapicon”类应该在div上,否则它看起来像这样:

<div id="venue_map_icon_<%= venue.id %>" style="position:absolute;" class="mapicon">
<%= image_tag(venue.venuetype.mapicon.mapicon.url(:mapicon)) %>
</div>

我认为单行水平滚动显示与我的头部混乱并阻止我看到它。当我以段落形式看到你的解决方法时,它突然向我跳了出来。

希望就是这样。 :)