используя рельсы формы в другом контроллере - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть такие представления "app/views/admin/index.html.haml", в этом файле я создаю

.container
  .d-flex.flex-column.justify-content-center
    = render partial: 'add_product'

Я создаю еще один partial для создания продукта

, и я создаю еще один частичный элемент в каталоге администратора "app/views/admin/_add_product.html.haml":

.p-2
  .d.flex.flex-column.justify-content-center
    = form_for(@product) do |f|
      .form-group.row
        = f.label :name,  class: 'col-sm-2 col-form-label'
        %br/
        .col-sm-10
          = f.text_field :name, class: 'form-control'

на контроллере продуктов "app/controller/products_controller.rb":

class ProductsController < ApplicationController

  def index
  end

  def new
    @product = Product.new
  end

  def create
    @product = Product.new product_values
  end

  private

  def product_values
    params.require(:product).permit(:name, :stock, :image, :price, :desc)
  end

end

, поэтому, когда я go к маршруту "/ admin", кажется, что "форма" не создал

он сказал: First argument in form cannot contain nil or be empty проблема в _add_product.html.haml, он не читает значение @product я создал на контроллере,

любая идея, как использовать разные взгляды на контроллер ??

на моих маршрутах я сделал:

resources :products

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

какой другой ответ был почти верным, но я забыл создать модель product.rb, поэтому я создал ее, а затем изменил маршрут:

resources :products, controller: 'admin'

это решило мою проблему: D

0 голосов
/ 04 апреля 2020

Вам присвоено значение @product.

class AdminController < ApplicationController
  # GET /admin
  def index
    @product = Product.new
  end
end

Вы также можете сделать это в самом фрагменте, указав значение по умолчанию:

= form_for(@product || Product.new) do |f|
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...