Rails передают параметры при создании действия через форму - PullRequest
0 голосов
/ 05 января 2019

У меня есть модели Item и ItemCategory. Товар принадлежит_Категории товаров.

В форме элемента я хочу создать новую категорию элементов и назначить ее текущему элементу.

Итак, я добавил в форму:

<%= link_to '+', new_quick_category_path(item_id: @item.id), remote: true %>

Тогда на items_controller:

  def new_quick_category
    @item_category = ItemCategory.new
    @item = Item.find(params[:item_id])
  end

Я получаю тогда форму:

<%= simple_form_for (@item_category), html: { id: :item_category}, remote: true do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
<h5> Name </h5>
<%= f.input :name, label: false %>

  <%= f.button :submit, "Create", class: "btn btn-sm btn-success" %>
<% end %>

Теперь, чтобы обновить текущий элемент с помощью вновь созданной item_category, я предполагаю, что мне нужно сделать это для item_categories_controller:

    def create
    @item = Item.find(params[:item_id])
    @item.update_attributes(item_category_id: @item_category.id)
    ....
    end

Поэтому мне нужно передать параметр item_id, чтобы создать действие для item_categories_controller.

Решением, которое приходит мне в голову, было бы передать его кнопке создания в форме, например:

  <%= f.button :submit, "Create"(item_id: @item.id), class: "btn btn-sm btn-success" %>

но это не работает.

Как я могу это сделать? Или я должен вместо этого сделать вложенную форму?

1 Ответ

0 голосов
/ 05 января 2019

Пожалуйста, попробуйте установить элемент как скрытое поле в форме, чтобы его можно было отправить в контроллер при отправке формы, скрытое поле должно получить значение из таких параметров, как это

<%= hidden_field_tag :item_id, params[:item_id] %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...