私は RoR を初めて使用し、開始するためだけに小さなアプリケーションを作成しています。
すべてのサプライヤーを一覧表示するサプライヤー ページがあり、その中には、新しい製品を作成できる「新しい」製品ページへの link_to があります。製品ページへの link_to を介してサプライヤー ID を送信し、そこに保存する必要があります。 hidden_field_tag 値
ここに私の製品ページがあります
<%= form_for @product, :url => {:action => "create"} do |f| %>
<%= f.label :product_name %>
<%= f.text_field :name %>
<%= collection_select(:product, :product_category_id, ProductCategory.all, :id, :category, {prompt: 'Select category'}) %>
<%= hidden_field_tag(:supplier_id, Supplier.first[:id]) %>
<%= f.submit "Create a product", class: "btn btn-primary"%>
<% end %>`
Supplier.first[:id] はコードを試すだけです
これは私のサプライヤーページです
<% provide(:title, 'All suppliers') %>
<h1>All suppliers</h1>
<ul class="suppliers">
<% @suppliers.each do |supplier| %>
<li>
<%= link_to supplier.name %>
<%= link_to "Add a product", products_path, :class => "btn btn-primary",:method => "get" %>
<div>
<% if supplier.products.any? %>
<h5>Products (<%= supplier.products.count %>)</h5>
<ol>
<% supplier.products.each do |product| %>
<li><%= product.name %></li>
<% end %>
</ol>
<% end %>
</div>
</li>
<% end %>
</ul>
何か案は ?
編集:
class ProductsController < ApplicationController
def new
@product = Product.new
end
def create
@product = Product.new(params[:product])
if @product.save
redirect_to "/products"
else
render 'new'
end
end
編集 2: 私の製品モデル:
class Product < ActiveRecord::Base
attr_accessible :name, :supplier_id, :product_category_id
attr_accessor :supplier_id, :product_category_id
belongs_to :supplier
belongs_to :product_category
validates :supplier_id, presence: true
validates :product_category_id, presence: true
end
rake routes を実行すると、次のようになります。
karam@karam-Inspiron-N5010:~/rails-projects/devise$ rake routes
new_admin_session GET /admins/sign_in(.:format) devise/sessions#new
admin_session POST /admins/sign_in(.:format) devise/sessions#create
destroy_admin_session DELETE /admins/sign_out(.:format) devise/sessions#destroy
admin_unlock POST /admins/unlock(.:format) devise/unlocks#create
new_admin_unlock GET /admins/unlock/new(.:format) devise/unlocks#new
GET /admins/unlock(.:format) devise/unlocks#show
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
user_password POST /users/password(.:format) devise/passwords#create
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
PUT /users/password(.:format) devise/passwords#update
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
user_registration POST /users(.:format) devise/registrations#create
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
products POST /products(.:format) products#create
new_product GET /products/new(.:format) products#new
product GET /products/:id(.:format) products#show
suppliers_new /suppliers/new(.:format) suppliers#new
suppliers /suppliers(.:format) suppliers#index
suppliers_create /suppliers/create(.:format) suppliers#create
/products(.:format) products#new
EDIT3:
私の ProductCategory モデル:
class ProductCategory < ActiveRecord::Base
attr_accessible :category
has_many :products
end
このモデルのコントローラーは空です。