Bootstrap 模态窗口不呈现模型验证错误

时间:2021-04-02 20:31:10

标签: javascript ruby-on-rails twitter-bootstrap modal-dialog

我的主页上有一个基本的模态窗口,用于呈现用于创建新 Post 的表单。

我在 Post 模型中有一个长度验证,并希望表单在不满足最小长度时显示错误。

这是 Post 模型:

class Post < ApplicationRecord
  belongs_to :user

  validates :content, length: { in: 1..400 }
end

这是我的 home.html.erb 视图

<!-- Modal button -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#tweetModal">
  New Tweet
</button>


<!-- Tweet Modal -->
<div class="modal fade" id="tweetModal" tabindex="-1" aria-labelledby="tweetModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="tweetModalLabel">Send a new Tweet</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close">X</button>
      </div>
      <div class="modal-body">

        <%= simple_form_for @post, remote: true do |f| %>
          <div class="form-inputs">
            <%= f.input :content %>
          </div>

          <div class="form-actions">
            <%= f.submit "Submit", class: "btn btn-primary"%>
          </div>
        <% end %>


      </div>
    </div>
  </div>
</div>

后控制器:

class PostsController < ApplicationController
  before_action :set_user

  def new
    @post = Post.new
  end

  def create
    @post = Post.new(post_params)
    @post.user = @user
    if @post.save
      redirect_to root_path
    else
      render :new
    end
  end

  private

  def post_params
    params.require(:post).permit(:content)
  end

  def set_user
    @user = current_user
  end
end

模态窗口不会呈现错误,我发现呈现它的唯一方法是 render :new 如果无法保存 Post

问题在于它会呈现属于 Post 的 new.html.erb 视图,而不是我主页中的模态窗口。

我可以让模态窗口显示错误吗?我应该将模态窗口代码移动到一个单独的部分文件中并使用 JS 来渲染它吗?

0 个答案:

没有答案
相关问题