以前の質問からご存知のように、私はRailsに慣れていますが、現在、次のように、データベースからコンボボックスにあるレコードを保存しないため、create関数に問題があります。
ただし、残りのレコードはデータベースに保存されます。確認のために、次のように入力します。
rails console
TankingLog.all
TankingLog Load (0.7ms) SELECT "tanking_logs".* FROM "tanking_logs"
[#<TankingLog id: 7, car_id: 28, cost: 3000.0, date: "2012-07-30 00:00:00", gallon: 2.0, gas_station_id: nil, km: 5000, created_at: "2012-07-30 22:00:40", updated_at: "2012-07-30 22:00:40">]
ご覧のとおり、gas_station_idフィールドはnilですが、選択したステーションのIDである必要があります。助けていただければ幸いです。ばかげた質問の場合は申し訳ありません。
フォームは次のとおりです。
<div class="container">
<h2>new tanking log</h2>
<%= form_for ([@user,@car,@tankinglog]) do |f| %>
<div><%= f.label :cost %><br />
<%= f.text_field :cost %></div>
<div><%= f.label :gallon %><br />
<%= f.text_field :gallon %></div>
<div><%= f.label :km %><br />
<%= f.text_field :km %></div>
<div><%= f.label :date %> <i>( format yyyy-mm-dd )</i> <br />
<%= f.text_field :date %></div>
<div><%= f.label :Station %><br />
<%= select("gas_station", "name", GasStation.all.collect {|gs| [ gs.name, gs.id ] }, { :include_blank => true })%></div>
<p>
if you don't see the station that you want, you can <%= link_to "create it", new_gas_station_path%>
</p>
<div><%= f.submit "create tanking",:class => "btn btn-primary" %></div>
<% end %>
<br />
<%= link_to "Back", user_car_tanking_logs_path(@user, @car),:class => "btn btn-primary"%>
</div>
とtankinglogcontroller
class TankingLogsController < ApplicationController
def new
@user = User.find(params[:user_id])
@car = @user.cars.find(params[:car_id])
@tankinglog = @car.tanking_logs.build
end
def create
@user = User.find(params[:user_id])
@car = @user.cars.find(params[:car_id])
@tankinglog = @car.tanking_logs.build(params[:tanking_log])
if @tankinglog.save
redirect_to user_car_tanking_logs_path(@user, @car), :flash => { :notice => " new tanking created!" }
else
redirect_to new_user_car_tanking_log_path ,:flash => { :notice => " sorry try again :(" }
end
end
def index
@user = User.find(params[:user_id])
@car = @user.cars.find(params[:car_id])
@tankinglog = @car.tanking_logs.all
end
end
モデルを見たい場合は...
class TankingLog < ActiveRecord::Base
belongs_to :gas_station
belongs_to :car
attr_accessible :car_id, :cost, :date, :gallon, :gas_station_id, :km
validates_presence_of :cost, :date,:gallon,:km
validates_numericality_of :cost, :gallon
validates_numericality_of :km #:only_integer
end
class GasStation < ActiveRecord::Base
has_many :tanking_logs
attr_accessible :name
validates_presence_of :name
end