#ruby-on-rails #bootstrap-modal
#ruby-на-рельсах #bootstrap-модальный
Вопрос:
У меня есть действие контроллера:
class UsersController < ApplicationController
def new
@user = User.new
if params[:email]
@email = params[:email]
@user.email = @email
end
end
def create
@user = User.new(user_params)
@user.save
redirect_to root_path
end
private
def user_params
params.require(:user).permit(:name, :email)
end
end
и это форма в моем нижнем колонтитуле (которая работает с момента передачи параметров).
-> кнопка-div — это bootstrap:
<%= form_tag new_user_path, class: "email-control", method: :get do %>
<%= text_field_tag :email,
params[:email],
class: "email-bar",
placeholder: "Type your email..."
%>
<div class="input-group-append">
<button type="submit" class="button-sent" data-bs-toggle="modal" data-bs-target="#login-popup"><i class="far fa-paper-plane"></i></i></button>
</div>
<% end %>
НО следующая simple_form должна быть МОДАЛЬНОЙ, появляющейся на каждой странице, которую я ввожу в своем электронном письме в нижнем колонтитуле:
<div class="login-container">
<div class="row center-div">
<div class="col-xs-12 col-sm-4 col-sm-offset-4">
<div class="form-login">
<h2>Send me Newsletters</h2>
<%= simple_form_for(@user) do |f| %>
<div class="form-inputs">
<%= f.input :name, required: false, autofocus: true %>
<%= f.input :email, required: false %>
</div>
<div class="form-actions">
<%= f.button :submit, "⤏Submit⤎", class: "email-control " %>
</div>
<% end %>
</div>
</div>
</div>
</div>
При переходе на эту страницу:
https://kolosek.com/rails-creating-modals /
Я смог увидеть это: я предполагаю, что JS не работает?
Я также думаю, что проблема заключается в том, что мое действие контроллера может быть отображено только в представлении new.html.erb и, следовательно, не может быть доступно ни на одной другой странице?
Большое вам спасибо за помощь.
Комментарии:
1. Эй, Витта, не могли бы вы подробнее рассказать о том, что происходит? И чего не происходит? Я не уверен, что модал вообще не отображается или он не работает? 🙂
2. Кнопка, которая должна переключать ваш модал, находится внутри формы для нового пользователя. Поэтому, когда вы нажмете на эту кнопку, она отправит форму и перенаправит вас, так что ваш модал будет немедленно закрыт. Вместо того, чтобы использовать форму, вы можете просто ссылаться на
new_user_path
with remote true .3. @Hackman но при изменении form_tag на link_to параметры :email не будут переданы. Есть ли способ получить модальное открытие, и электронное письмо уже предварительно заполнено?
4. @tomr Привет, спасибо, что ответили! Bootstrap вообще не работает, но когда я перехожу на эту страницу (см. Отредактированный Вопрос выше), проблема заключается в том, что я не могу отобразить new.html.erb, поскольку он не является частичным (но представляет собой новое действие пользователя). Теперь это более понятно? спасибо
5. Вы можете сделать это с помощью некоторого javascript. При модальном открытии вы берете значение поля электронной почты и помещаете его в модальное поле электронной почты.