Как установить идентификатор с независимой страницы, используя раскрывающийся список? или как я могу сохранить значение own_to, has_many? - PullRequest
0 голосов
/ 22 января 2020

Я новичок в ruby на рельсах. Я хочу создать Бренд - Список товаров. Я хотел бы добавить названия продуктов и брендов (должны быть выбраны в раскрывающемся списке) на независимой странице. Каждый продукт имеет название и идентификатор бренда. Я установлю название бренда, которое выбрано из выпадающего списка, в переменную. после этого я добавлю название продукта, которое пользователь написал на независимой странице, и идентификатор бренда в таблицу продуктов.

rout.rb

Rails.application.routes.draw do
  get 'welcome/index'
  get 'add_product/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

.._ create_brands.rb

class CreateBrands < ActiveRecord::Migration[6.0]
  def change
    create_table :brands do |t|
      t.string :title

      t.timestamps
    end
  end
end

.._ create_products.rb

class CreateProducts < ActiveRecord::Migration[6.0]
  def change
    create_table :products do |t|
      t.string :name
      t.references :brand, null: false, foreign_key: true

      t.timestamps
    end
  end
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

add_product / index. html .erb (add_product имеет представление и контроллер)

<h1>Add a new product</h1>
<%= form_with(model: @product) do |f| %>
<p>
  <%= f.label :name,"Product name: " %><br>
  <%= f.text_field :name %>
</p>
<%= f.collection_select(:brand_id, Brand.all, :id, :title) %>
<p>

    <%= f.submit "Add a product" %>

</p>
<% end %>

add_product_controller.rb

class AddProductController < ApplicationController
  def index
  end

  def new
   @product = Product.new
  end

   def create
     @product = Product.new(product_params)
     if @product.save
        redirect_to @product
     else
        render :new
     end
   end

   private
     def product_params
       params.require(:product).permit(:name,:brand_id)
     end

end

при запуске маршрутов в консоли,

 Prefix Verb   URI Pattern                                                                              Controller#Action
                        welcome_index GET    /welcome/index(.:format)                                                                 welcome#index
                    add_product_index GET    /add_product/index(.:format)                                                             add_product#index
                       brand_products GET    /brands/:brand_id/products(.:format)                                                     products#index
                                      POST   /brands/:brand_id/products(.:format)                                                     products#create
                    new_brand_product GET    /brands/:brand_id/products/new(.:format)                                                 products#new
                   edit_brand_product GET    /brands/:brand_id/products/:id/edit(.:format)                                            products#edit
                        brand_product GET    /brands/:brand_id/products/:id(.:format)                                                 products#show
                                      PATCH  /brands/:brand_id/products/:id(.:format)                                                 products#update
                                      PUT    /brands/:brand_id/products/:id(.:format)                                                 products#update
                                      DELETE /brands/:brand_id/products/:id(.:format)                                                 products#destroy
                               brands GET    /brands(.:format)                                                                        brands#index
                                      POST   /brands(.:format)                                                                        brands#create
                            new_brand GET    /brands/new(.:format)                                                                    brands#new
                           edit_brand GET    /brands/:id/edit(.:format)                                                               brands#edit
                                brand GET    /brands/:id(.:format)                                                                    brands#show
                                      PATCH  /brands/:id(.:format)                                                                    brands#update
                                      PUT    /brands/:id(.:format)                                                                    brands#update
                                      DELETE /brands/:id(.:format)                                                                    brands#destroy
                                 root GET    /                                                                                        welcome#index

независимое изображение страницы

если я go перешел на brans и нажал на шоу, я могу добавить товар только с именем. но я хочу добавить товар с независимой страницы. так как я могу это сделать? Могу ли я установить значение brand_id из выпадающего списка? чем я могу сохранить название продукта и идентификатор бренда?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...