Как добавить модал в Rails, используя Bootstrap в нижнем колонтитуле и передавая параметры?

#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. При модальном открытии вы берете значение поля электронной почты и помещаете его в модальное поле электронной почты.