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

image_tag 行を評価する必要があるかもしれません:

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

コントローラーに @bg_image を設定しても何も保存されないので、同じように簡単に保存できます。:

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

これにより、おそらくナノ秒速くレンダリングされ、よりきれいに見えます。

于 2012-07-27T23:23:14.190 に答える