ジェイソン、ありがとう
初心者には少し大きいことに同意しますが、要件は、データベースを読み書きする必要がある Web サイトを作成することでした。私たちはパートナーワークで Rails を簡単に紹介しましたが、今は独りで「少し」迷い、時間がなくなっています。
これが私が得ているエラーメッセージです:
NameError in Homes#index
未定義のローカル変数またはメソッド「image」
<#:0xb62f7aa4>
抽出されたソース (20 行目あたり):
17: <% @homes.each do |home| %>
18: <tr>
19: <td><%= home.name %></td>
20: <td><%= image.home_id %></td>
21: <td><%= home.details %></td>
22: <td><%= home.region %></td>
23: <td><%= home.address %></td>
データベース テーブルを作成したとき、homes テーブルに Image_ID がありましたが、これは必要ないので、images テーブルに Home_ID だけあれば十分だと言われました。
image.home_id が原因でエラーが発生していることは理解しています。あなたの意見は何ですか?それぞれの home_id のすべての画像を表示するには、Image_ID を homes テーブルに戻す必要がありますか、それとも別の方法がありますか? どの画像をメインの画像として表示し、どの画像を小さい画像として表示するかを決定できるようにしたいと考えています。
私が使用するコードは次のとおりです。
models/home.rb
class Home < ActiveRecord::Base
attr_accessible :address, :admin_id, :details, :name, :price, :region
has_many :images
end
モデル/image.rb
class Image < ActiveRecord::Base
attr_accessible :image_description, :image_name, :image_path
belongs_to :home
end
ビュー/ホームズ/index.html.erb
<h1>Listing homes</h1>
<table>
<tr>
<th>Name</th>
<th>Image</th>
<th>Details</th>
<th>Region</th>
<th>Address</th>
<th>Price</th>
<th>Admin</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @homes.each do |home| %>
<tr>
<td><%= home.name %></td>
<td><%= image.home_id %></td>
<td><%= home.details %></td>
<td><%= home.region %></td>
<td><%= home.address %></td>
<td><%= home.price %></td>
<td><%= home.admin_id %></td>
<td><%= link_to 'Show', home %></td>
<td><%= link_to 'Edit', edit_home_path(home) %></td>
<td><%= link_to 'Destroy', home, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New Home', new_home_path %>
ビュー/家/show.html.erb
<p id="notice"><%= notice %></p>
<p>
<b>Name:</b>
<%= @home.name %>
</p>
<p>
<b>Image:</b>
<%= @image.home_id %>
</p>
<p>
<b>Details:</b>
<%= @home.details %>
</p>
<p>
<b>Region:</b>
<%= @home.region %>
</p>
<p>
<b>Address:</b>
<%= @home.address %>
</p>
<p>
<b>Price:</b>
<%= @home.price %>
</p>
<p>
<b>Admin:</b>
<%= @home.admin_id %>
</p>
<%= link_to 'Edit', edit_home_path(@home) %> |
<%= link_to 'Back', homes_path %>
ビュー/画像/_form.html.erb
<%= form_for(@image) do |f| %>
<% if @image.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@image.errors.count, "error") %> prohibited this image from being saved:</h2>
<ul>
<% @image.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :image_name %><br />
<%= f.text_field :image_name %>
</div>
<div class="field">
<%= f.label :image_path %><br />
<%= f.text_field :image_path %>
</div>
<div class="field">
<%= f.label :image_description %><br />
<%= f.text_area :image_description %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
コントローラー/images_controller.rb
class ImagesController < ApplicationController
# GET /images
# GET /images.json
def index
@images = Image.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @images }
end
end
# GET /images/1
# GET /images/1.json
def show
@image = Image.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @image }
end
end
# GET /images/new
# GET /images/new.json
def new
@image = Image.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @image }
end
end
# GET /images/1/edit
def edit
@image = Image.find(params[:id])
end
# POST /images
# POST /images.json
def create
@image = Image.new(params[:image])
respond_to do |format|
if @image.save
format.html { redirect_to @image, notice: 'Image was successfully created.' }
format.json { render json: @image, status: :created, location: @image }
else
format.html { render action: "new" }
format.json { render json: @image.errors, status: :unprocessable_entity }
end
end
end
# PUT /images/1
# PUT /images/1.json
def update
@image = Image.find(params[:id])
respond_to do |format|
if @image.update_attributes(params[:image])
format.html { redirect_to @image, notice: 'Image was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @image.errors, status: :unprocessable_entity }
end
end
end
# DELETE /images/1
# DELETE /images/1.json
def destroy
@image = Image.find(params[:id])
@image.destroy
respond_to do |format|
format.html { redirect_to images_url }
format.json { head :no_content }
end
end
end
どうもありがとう。本当にありがとうございました!!!