使用外键关联显示回形针图像

时间:2017-11-14 04:15:57

标签: ruby-on-rails foreign-keys paperclip

我有两个型号。我想在resources_game模型中使用外键(resource_id)来显示图像。

这是我的Resource模型

class Resource < ActiveRecord::Base

has_many :resource_books
has_many :resource_games, :dependent => :destroy
belongs_to :resouce_type
has_attached_file :image, :styles => { :small => "100x120>"},
                  :url  => "/assets/games/images/:basename/:style/:basename.:extension",
                  :path =>":rails_root/public/assets/games/images/:basename/:style/:basename.:extension"
accepts_nested_attributes_for :resource_books, :resource_games

这是我的ResourceGame模型

class ResourceGame < ActiveRecord::Base

belongs_to :resource, :class_name => ResourceGame, :foreign_key => :resource_id
attr_accessor :add_resources

has_attached_file :image, :styles => { :small => "100x120>"},
                  :url  => "/assets/games/images/:basename/:style/:basename.:extension",
                  :path =>":rails_root/public/assets/games/images/:basename/:style/:basename.:extension"

accepts_nested_attributes_for :add_resource

如果图像存储在资源表中,我将检索并填充表格,如下所示:

在我的Resources控制器中:

@latest_resources = Resource.paginate(:page => params[:page],:order => "id DESC", :per_page => 10)

然后在我看来:

<% @latest_resources.each do |project| %>

   <tr>
     <td><%= image_tag project.image.url(:small)  %></td>
     <td><%= project.resouce_type_name %></td>
     <td><%= project.name %></td>
     <td><%= project.url %></td>
   </tr>
<% end %>

图像存储在resources_game表中,那么我应该怎么做才能在我的视图中的image_tag中进行检索以获取它?

2 个答案:

答案 0 :(得分:0)

您需要使用form_for并构建嵌套表单。这是instructions,过去然后ping我。

@resource.resourcegames是一个数组,因为您有has_many关系,因此当您使用form_for时,您可以拥有1个嵌套表单或多个嵌套表单。

我还引用了paperclip github page

  

用法

     

Paperclip的基础非常简单:声明您的模型具有has_attached_file方法的附件,并为其命名。

     

Paperclip将包含最多四个属性(所有属性都以该附件的名称为前缀,因此如果您愿意,每个模型可以有多个附件),并为它们提供友好的前端。这些属性是:

<attachment>_file_name
<attachment>_file_size
<attachment>_content_type
<attachment>_updated_at
  

默认情况下,Paperclip只需要_file_name即可运行。如果您想使用内容类型验证,则需要添加_content_type。

     

有关传递给has_attached_file的选项的更多信息,请参阅Paperclip :: ClassMethods的文档。

以下链接有几个指南

http://www.railscook.com/recipes/multiple-files-upload-with-nested-resource-using-paperclip-in-rails/

Rails + Paperclip - Update/Edit multiple images

https://github.com/thoughtbot/paperclip/issues/1734

https://groups.google.com/forum/#!topic/rubyonrails-talk/Waxw8D6seRc

https://sleekd.com/general/adding-multiple-images-to-a-rails-model-with-paperclip/

答案 1 :(得分:0)

我找到了一个适用于我的解决方案,它将resource_games模型包含在控制器中的数组中。

    @latest_resources = Resource.find(:all, :include => :resource_games)

并在视图中调用:

<% @latest_resources.each do |project| %>      
  <tr>
  <% project.resource_games.each do |resourcegames| %>      

<td><%= image_tag resourcegames.image.url(:small)  %></td>
  <% end %>
<td><%= project.resouce_type_name %></td>

这样我就可以同时使用多个表中的数据填充表格。