我的主页上有一个基本的模态窗口,用于呈现用于创建新 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 来渲染它吗?