私は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をどのようにインスタンス化する必要がありますか?
ありがとう、マテオ。
あなたの説明とチュートリアルをお寄せいただきありがとうございます。これは私の問題を解決します。 – Mateo
マイライン55はでした:<%= f.hidden_field:file_cache%>これは、ブロックに属し :
<%= f.label:ファイル 'Agregarイマヘン' %>
– Mateo<%= f.file_field:ファイルを%> <%= f.hidden_field:file_cache%>
私はもう別の問題があります。バンドルの更新後、私はレールに星を付けることはできません。 .... =>起動中のプーマ => 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