私はレールが新しく、アパートに関する情報を格納する不動産アプリケーションを作成しています。複数の画像をレールでリソースに保存する方法
私はアパートモデル、ビュー、そしてコントローラーを持っていますので、CRUDアパートメントを利用できます。
ここで、アパートに複数の画像を追加する機能を追加したいと思います。
gem carrierwave、mini_magick、およびfogの宝石をインストールしました。
画像(文字列)列とapartment_id(整数)列を持つ画像モデルを作成しました。次に、ImageとApartmentの間にbelongs_to/has_many関係を作成しました。
質問:「アパートメントの作成」ビューで画像モデルのインスタンスを作成するにはどうすればよいですか?
私はアパートのコントローラでは、このような何かをしたいと仮定と思いますが、私はよく分からない:
def new
@apartment = Apartment.new
end
def create
@apartment = current_user.apartments.new(apartment_params)
**@image = @apartment.images.new(?)**
if @apartment.save **&& @image.save**
flash[:notice] = "Congratulations! Your apartment has been added."
redirect_to apartments_path
else
flash[:error] = "There was an error saving your listing. Please try again."
render :new
end
end
private
def apartment_params
params.require(:apartment).permit(:street, :from_date, :to_date, :to_date_open, :flex_dates, :price, :price_neg, :agent_fee, :furnished, :package, :flights, :beds, :baths, :description)
end
また、私はビューにコードを変更するかどうかはわかりません。
<%= form_for(@apartment) do |f| %>
<% if @apartment.errors.any? %>
<div id="error_explanation">
<ul>
<% @apartment.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :street %><br>
<%= f.text_field :street %>
</div>
**<div class="field">
<%= f.label :picture %>
<%= f.file_field :picture %>
<%#= f.hidden_field :picture_cache %>
</div>**
新しいアパートメントの作成中に画像を追加する方法についてのガイダンスは素晴らしいものです。
ありがとうございます!
ありがとう@salinn !!あなたが関係を説明したやり方は役に立ちます。あなたは写真とギャラリーのためのcrudを実装するためにアパートコントローラを更新する方法について私にガイダンスを与えることができるでしょうか? –
@NechamaGoldmanだから私はあなたがアパートのコントローラで何かを更新する必要はないと述べた方法。あなたがすることはあなたの通常のステップを経てコントローラのショーページに進み、写真セクションを追加して写真用のフォームを置くことです。私は個人的にここにギャラリーが必要とは思わない。それは理にかなっていますか? –