#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