在重定向到新视图时保留rails中验证的错误消息?

时间:2016-08-01 16:22:08

标签: javascript ruby-on-rails

我正在使用模态中的验证来检查错误。这很好,并显示错误消息(我使用调试器来确认这一点)。现在对我来说是棘手的部分。

所以现在当验证失败时,我在我的代码中执行此操作:

  def create
    checked_segment_topics = params[:checked_segment_topics].split(",")
    @menu = Menu.create_menu(checked_segment_topics, menuparams)
    if @menu ==  true
      redirect_to menus_path
    else
      redirect_to newmenu_path
    end
  end

因为我正在重定向到新视图,所以不会显示错误消息。我尝试渲染,问题是它将UUID附加到表单的id。因此我的javascript代码失败了。在提交表单之前,我必须找到表单ID进行一些计算。

我的routes.rb文件的相关部分在这里:

get    '/menus'               => 'menus#index'
get    '/newmenu'             => 'menus#new'
resources :menus,     only: [:new, :create, :edit, :update, :destroy]

有人可以指导我朝正确的方向发展吗?

1 个答案:

答案 0 :(得分:1)

实例变量不会在请求中持续存在。因此,如果您不想为此使用会话,那么我能想到的另一种方法是将它们存储在数据库中而不运行验证。

def create
  # some logic to build @menu

  @menu.save(validate: false)

  # some logic for redirection
end

然后,在必要的操作中获取它们并对其运行验证。

def new
  # some logic to fecth @menu

  @menu.valid?

  # some logic to render @menu
end