Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 引导模式窗口不显示';t渲染模型验证错误_Javascript_Ruby On Rails_Twitter Bootstrap_Modal Dialog - Fatal编程技术网

Javascript 引导模式窗口不显示';t渲染模型验证错误

Javascript 引导模式窗口不显示';t渲染模型验证错误,javascript,ruby-on-rails,twitter-bootstrap,modal-dialog,Javascript,Ruby On Rails,Twitter Bootstrap,Modal Dialog,我的主页上有一个基本的模式窗口,可以呈现一个表单来创建一个新的Post 我在Post模型中进行了长度验证,如果表单不满足最小长度,我希望表单显示一个错误 这是Post模型: class Post < ApplicationRecord belongs_to :user validates :content, length: { in: 1..400 } end 邮政总监: class PostsController < ApplicationController be

我的主页上有一个基本的模式窗口,可以呈现一个表单来创建一个新的
Post

我在
Post
模型中进行了长度验证,如果表单不满足最小长度,我希望表单显示一个错误

这是Post模型:

class Post < ApplicationRecord
  belongs_to :user

  validates :content, length: { in: 1..400 }
end
邮政总监:

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
class PostsController
模式窗口不会呈现错误,我发现的唯一呈现错误的方法是,如果无法保存
Post
,请执行
render:new

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


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

我会完全按照您的建议进行推荐。将表单移动到部分渲染部分,然后您应该能够重新渲染部分并在失败时替换模式内容。看起来是个好主意fit@engineersmnky谢谢如何使JS呈现部分文件?
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