从控制器传递回形针图像到轨道视图

问题描述:

我有一个模型附加了一个图像,我想通过控制器传递到视图。这是我曾尝试自己的方式,但它不工作:从控制器传递回形针图像到轨道视图

型号:

class CustomForm < ActiveRecord:Base 
    has_attached_file :background_image, 
     :storage => :s3, 
     :bucket => "asdf", 
     ... 

    belongs_to :project 

控制器:

class FormsController < ApplicationController 
    before_filter :get_project 

    def show 
     @form = @project.forms.find(params[:id]) 
     @bg_image = @form.background_image.url 
    end 

    def get_project 
     @project = current_account.projects.find(params[:project_id]) 
    end 

查看:

<html> 
    <head> 
    </head> 

    <body> 
     <%= image_tag @bg_image %> 
    </body> 
</html> 

这将创建一个“能'将nil转换为字符串“错误并指向”<%= image_tag @bg_image%>“行,并且我认为@bg_i法师是零。那么我在这里做错了什么?

+0

是否正确设置了“@ project”?如果是这样,是不是'@ form.background_image'是否有值? – 2012-07-27 23:34:58

+0

我很确定这是因为@form变量工作正常 – 2012-07-27 23:36:54

+0

嗯,我很好奇为什么'@ bg_image'不工作,但'@ form.background_image.url'是。 – 2012-07-27 23:40:20

Uou可能需要EVAL的IMAGE_TAG行:

<%= eval("image_tag #{@bg_image}") 

既然你是不是通过在控制器@bg_image集保存任何东西,你可以很容易地做到。 :

<%= image_tag @form.background_image.url %> 

这可能会让纳秒更快,看起来更清洁。

+0

我得到这个错误:“错误数量的参数(0为1)” – 2012-07-27 23:25:36

+0

什么对象? – 2012-07-27 23:27:16

+0

正在做种类有用,但图片未定义 – 2012-07-27 23:28:11