0

我有一个模型,它附加了一个图像,我想通过控制器将其传递到视图中。这是我自己尝试过的方式,但它不起作用:

模型:

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_image 为 nil。那么我在这里做错了什么?

4

1 回答 1

1

Uou 可能需要评估 image_tag 行:

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

由于在控制器中设置 @bg_image 并没有保存任何内容,因此您可以轻松地做到这一点。:

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

这可能会更快地渲染一纳秒,并且看起来更干净。

于 2012-07-27T23:23:14.190 回答