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

#ruby-on-rails #devise

#ruby-on-rails #разработка

Вопрос:

Я разработал перенаправление на предыдущую настройку страницы для своего приложения, используя hidden_field_tag. Теперь я добавил избранное действие на свой веб-сайт, и я бы хотел, чтобы пользователь, однажды нажав кнопку избранное, мог зарегистрироваться, используя всплывающее окно, и это избранное будет сохранено. Я создал всплывающее окно, используя модальное, и оно работает, но как только пользователь зарегистрируется — избранное, очевидно, не создано. Я попытался передать скрытое поле только для модального типа следующим образом

 <%= hidden_field_tag("page_id", "favorite") %>
  

затем в application_controller я добавил

 if params[:page_id] == "favorite"
  favorite_item_path(@item, type: "favorite", method: :put)
end
  

контроллер элементов имеет любимое действие, подобное этому

 def favorite
@item = Item.find(params[:id]) 

type = params[:type]
if type == "favorite"
  current_user.favorites << @item
  redirect_to :back

elsif type == "unfavorite"
  current_user.favorites.delete(@item)
  redirect_to :back

else
  redirect_to :back, notice: 'Nothing happened.'
end
  

завершение

вот форма на модальном

 <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
      <%= devise_error_messages! %>

      <div class="field">
        <%= f.text_field :username, autofocus: true, placeholder: "Create a username", class: "form-control" %>
      </div>

      <br>

      <div class="field">
        <%= f.email_field :email, placeholder: "Enter your email", class: "form-control" %>
      </div>

      <br>

      <div class="field">
        <%= f.password_field :password, autocomplete: "off", placeholder: "Choose your password", class: "form-control" %>
      </div>

      <br>

      <div class="actions">
        <%= hidden_field_tag("page_id", "favorite") %>
        <%= f.submit "Sign up", class: "btn" %>
      </div>


    <% end %>
  

и когда я пытаюсь зарегистрироваться, я получаю следующую ошибку

Маршрут не соответствует {:action=>»избранное», :controller=>»элементы», :id=> nil, :method=>:put, :type=>»избранное»} отсутствуют обязательные ключи: [:id]

Как я могу передать идентификатор в модальном?

Спасибо

Комментарии:

1. Пожалуйста, покажите всю форму, потому что ошибка, похоже, связана с формой, которую вы отправляете.

2. @Alfie прав. Только что добавлено

3. Не уверен, почему именно вы получаете сообщение об ошибке, но я могу сказать вам одну вещь: вы пытаетесь отправить форму f и, поскольку hidden_field_tag она не является частью формы, даже если эта форма работает, не будет отправлять значение вместе с другими полями формы. вы все равно должны использовать f.text_field