Я новичок на рельсах. У меня есть товар - список брендов.
маршруты рб
Rails.application.routes.draw do
get 'welcome/index'
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
resources :brands do
resources :products
end
root 'welcome#index'
end
Brand.rb
class Brand < ApplicationRecord
has_many :products, dependent: :destroy
validates :title, presence: true,
length: { minimum: 2 }
end
Product.rb
class Product < ApplicationRecord
belongs_to :brand
end
продукты. контроллер
class ProductsController < ApplicationController
#before_action :set_brand
skip_before_action :verify_authenticity_token
def new
if params[:brand_id]
@brand = Brand.find(params[:brand_id])
end
@product = Product.new
end
def edit
@brand = @product.brand
@product = Product.find(params[:id])
end
def update
@brand = Brand.find(params[:brand_id])
@product = Product.find(params[:id])
@product.update(product_params)
redirect_to brand_path(@brand)
end
def create
@brand = Brand.find(params[:brand_id])
@product = @brand.products.create(product_params)
redirect_to brand_path(@brand)
end
def destroy
@brand = Brand.find(params[:brand_id])
@product = @brand.products.find(params[:id])
@product.destroy
redirect_to brand_path(@brand)
end
def update
@brand = Brand.find(params[:brand_id])
@product = @brand.products.find(params[:id])
@product.destroy
end
helper_method :update
private
def product_params
params.require(:product).permit(:name)
end
def set_brand
@brand = Brand.find(params[:brand_id])
end
end
... / products / new. html .erb
<h1>Add a new product</h1>
<%= form_with(model: [ @brand, @brand.products.build ], local: true) do |form| %>
<p>
<%= form.label :name,"Product name: " %><br>
<%= form.text_field :name %>
</p>
<p>
</p>
<%= form.label :title,"Select a Brand" %>
<%= form.collection_select(:brand_id, Brand.all, :id, :title,{selected: @brand.id}) %>
<p>
<%= form.submit "Add a product" %>
</p>
<% end %>
new. html .erb picture
, поэтому я хочу установить brand_id из выбранного элемента в выпадающем списке. В этом случае я выбираю первый элемент для brand_id, но не могу изменить brand_id. Как я могу установить brand_id, который выбран из выпадающего списка? и как я могу сохранить его.