2017-09-29 17 views
0

私はusign Rails 5.1とcarrierwave 1.1.0です。rails 5多形関連での搬送波未定義のメソッドキャッシュ

私の関連写真である写真はprendasに属しています。ここで

は私のモデルである:

class Prenda < ApplicationRecord 

has_many :fotos, inverse_of: :prenda, dependent: :destroy 
accepts_nested_attributes_for :fotos 

validates :.... 

end 

写真集モデル:

class Foto < ApplicationRecord 
mount_uploader :file, FileUploader 

belongs_to :prenda, inverse_of: :fotos 

validates :file, presence: true, file_size: { less_than: 1.megabytes } 

end 

とそのコントローラ:

class PrendasController < ApplicationController 

before_action :authenticate_user!, only: [:new, :create, :edit, :update, :destroy] 

def index 

    @prendas = Prenda.all 

end 

def show 

    @prenda = Prenda.find(params[:id]) 

    @fotos = @prenda.fotos.all 

end 

def new 

    @prenda = Prenda.new 

    @foto = @prenda.fotos.build 

end 

......... 

private 

    def prenda_params 

     params.require(:prenda).permit(:titulo, :tipo, fotos_attributes: [:file, :file_cache]) 

    end 

end 

......

class FotosController < ApplicationController 

def index 

    @fotos = Foto.all 

end 


def show 

end 

def new 

    @foto = Foto.new 

end 

.......... 

private 

    def foto_params 

    params.require(:foto).permit(:file, :file_cache) 

    end 

end 

とフォーム:I'amはエラーを取得して、このシナリオでは

%= bootstrap_form_for @prenda do |f| %> 
    <% if @prenda.errors.any? %> 
    <%= f.alert_message "Favor correjir los errores debajo." %> 
    <% end %> 

    <p> 
    <%= f.label :titulo, 'Titulo' %><br> 
    <%= f.text_field :titulo %> 
    </p> 

    <p> 
    <%= f.label :tipo, 'Tipo' %><br> 
    <%= f.text_field :tipo %> 
    </p> 

    <p> 
    <strong>Fotos:</strong> 
    <% if @fotos %> 
     <% @fotos.each do |foto| %> 
     <%= image_tag foto.file.thumb.url %> 
     <% end %> 
    <% end %> 
    </p> 

    <p> 
    <%= f.label :file, 'Agregar Imágen' %><br> 
    <%= f.file_field :file %> 
    <%= f.hidden_field :file_cache %> 
    </p> 

    <p> <%= f.submit "Guardar", class: "btn btn-primary"%> </p> 
<% end %> 

Prendas#でNoMethodError新しい

表示/ホーム/マテオ/ Tienda /アプリ/ビュー/ prendas/_form.html.erbどこ上げライン#55:

#Prendaのための未定義のメソッド `file_cache」:0x00000003a795b0

助けてください!

私は間違っていますか?

「フォントまたはファイル」を持たない親オブジェクト「Prenda」のエラーメッセージが表示されますが、フォームのPrendasControllerで構築された@fotoをどのようにインスタンス化する必要がありますか?

ありがとう、マテオ。

答えて

0

ファイルがあると写真のモデルのフィールドとそのはので、私はあなたがこれを使うべきだと思うのネストされた属性を経由して提出された:

<p> 
    <%f.fields_for fotos_attributes do |foto| %> 
    <%= foto.label :file, 'Agregar Imágen' %><br> 
    <%= foto.file_field :file %> 
    <%= foto.hidden_field :file_cache %> 
    <%end%> 
</p> 

をして@foto = @prenda.fotos.buildこれを構築する必要はありません。 これを試すことができます。エラーは55行目に表示されているので、55行目のコードを表示してください。

tut-1tut-2

おかげでこのチュートリアルをフォローしてください。

+0

あなたの説明とチュートリアルをお寄せいただきありがとうございます。これは私の問題を解決します。 – Mateo

+0

マイライン55はでした:<%= f.hidden_​​field:file_cache%>これは、ブロックに属し :

<%= f.label:ファイル 'Agregarイマヘン' %>
<%= f.file_field:ファイルを%> <%= f.hidden_​​field:file_cache%>

Mateo

+0

私はもう別の問題があります。バンドルの更新後、私はレールに星を付けることはできません。 .... =>起動中のプーマ => Rails 5.1.4アプリケーションの開発開始 =より多くの起動オプションのために 'rails server -h'を実行 終了 /var/lib/gems/2.4.0/gems/carrierwave-1.2.0/lib/carrierwaveです。rb:45: 'in class:Railtie> ':未定義メソッド' include?' for:es:Symbol(NoMethodError) 私はこれが私のスペイン語の国際化(:es:Symbol)と関連してsomethigだと思います。これまでは大丈夫だった。私がすぐにそれを解決できない場合、私はここで別の問題を開くかもしれません。ありがとうございますAnand(Viswanathan) – Mateo

関連する問題