Ruby on Railsスキルを練習するWebアプリケーションを作成しようとしています。私は自分のデータベースにmanufacturers, models, tints, prices
'id' =(空白)のメーカーが見つかりません
- メーカー
{id, name}
いくつかの実体を持っている - 店舗車のメイクを - モデル
{id, manufacturer_id, name}
から - 色合い
{id, manufacturer_id, model_id, front, sides, rear}
車のモデルを保存する - 色合いの長さが を必要と格納
- 価格
{id, description, price }
- 商品の価格を格納します。
私はクォータティを生成するためのページを作成しました窓の着色のためにオン。ページには、以下manufacturer, model, type of film(front), type of film(side+rear)
を選択するユーザーが
<%= form_tag('/quotation/tints/generate') do %>
<%= label :manufacturer_id, 'Manufacturer' %>
<div class="field">
<%= collection_select(:tint, :manufacturer_id, Manufacturer.order(:name), :id, :name, {:prompt => "Select Manufacturer"}) %>
</div>
Model:
<div class="field">
<%= grouped_collection_select(:tint, :model_id, Manufacturer.order(:name), :models, :name, :id, :name, {:prompt => "Select Model"}) %>
</div>
<%= label :price_front, 'Front Tint' %>
<div class="field">
<%= collection_select(:price, :price_front, Price.order(:name), :id, :name, {:prompt => "Select Front Tint"}) %>
</div>
<%= label :price_rear, 'Size and Back Tint' %>
<div class="field">
<%= collection_select(:price, :price_rear, Price.order(:name), :id, :name, {:prompt => "Select Side & Rear Tint"}) %>
</div>
<div class="form-group">
<%= submit_tag 'Submit' %>
</div>
<% end %>
フォームフォームが送信されると、それは/quotation/tints/generate
にリダイレクトしてから値を表示しなければならないためのコードであるようにするドロップダウンメニューが含まれてドロップダウンメニュー。しかし、Couldn't find Manufacturer with 'id'=
というエラーが表示されました。エラーの原因となったコードは、ここでデバッグログ
{"utf8"=>"✓",
"authenticity_token"=>"Pl2bXiRT0AoF4i0h1RCHDbuvaKJNZOkV5ULQHKxDQgZzBWWLJ2mH7ddb9akwgxbloxBIHoVaT3pcwoIGcRufpg==",
"tint"=>{"manufacturer_id"=>"7", "model_id"=>"6"},
"price"=>{"price_front"=>"1", "price_rear"=>"2"},
"commit"=>"Submit"}
私は、各ドロップダウン値のid
がパラメータリストに正しく表示されていることがわかりますからパラメータがある
def generate
@manufacturers = Manufacturer.find(params[:manufacturer_id])
end
の下に示されています。しかし、私は/quotation/tints/generate
に値を印刷することはできませんし、製造業者またはモデルの名前を得ることもできません。ここで
はroutes.rb
です:
get '/quotation/tints' => 'tints#quotation', :as => 'tints_quotation'
post '/quotation/tints/generate' => 'tints#generate', :as => 'generate_tints_quotation'
Tint.rb
:
class Tint < ApplicationRecord
has_many :manufacturers
has_many :models
belongs_to :manufacturer
belongs_to :model
validates_uniqueness_of :model_id, :scope => [:manufacturer_id]
end
Model.rb
:
class Model < ApplicationRecord
belongs_to :manufacturer, :dependent => :destroy
validates :name, :presence => true
validates_uniqueness_of :name, :scope => [:manufacturer_id]
before_save :capitalize_content
end
Manufacruter.rb
:
class Manufacturer < ApplicationRecord
has_many :models, :dependent => :destroy
validates :name, :presence => true, uniqueness: { case_sensitive: false }
before_save :capitalize_content
end
tints.controller.rb
:
def quotation
render 'quotation'
end
def generate
@manufacturers = Manufacturer.find(params[:manufacturer_id])
end
generate.html.erb
:
<%= @manufacturers.name %>
私はメーカーを印刷しようとしているが、私はそれを定義する複数の方法を試してみましたが、私はまだ直面しています
を選択しました同じエラー。どんな助けでも大歓迎です。
はroutes.rbの唯一のルートですか? –
いいえ、もっとあります。 'Rails.application.routes.drawは リソースの操作を行います。価格 リソース:色合い リソース:モデル リソース:メーカー devise_for:ユーザー のget '/引用/色合い' => 'は#引用を濃淡':=> 'としてtints_quotation ' 投稿'/quotation/tints/generate '=>' tints#generate '、:as =>' generate_tints_quotation ' #このファイルで利用可能なDSLの詳細については、http://guides.rubyonrails.org/を参照してください。 routing.html root "pages#show"、page: "index" end ' –