2016-08-01 48 views
1

我正在使用我的模态中的验证检查错误。这工作正常,并显示错误消息(我用调试器来确认这一点)。现在来了我的棘手部分。在重定向到新视图时保留来自验证的错误消息?

当验证失败我做这在我的代码,所以现在:

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 

因为我做一个重定向到一个新的观点,错误消息未显示。我尝试渲染和问题是它追加到窗体的ID UUID。正因为如此,我的JavaScript代码失败。在表单提交之前,我必须找到表单ID进行一些计算。

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

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

有人能指导我在正确的方向?

+0

你见过这个http://stackoverflow.com/questions/1168017/how-do-i-store-an-instance-variable-across-multiple-actions-in-a-controller? –

+0

我不想将它放在会话变量中或使用@@变量。 – defiant

+0

然后我想到的另一种方法是在第一个控制器中执行'save(validate:false)',然后将其加载到第二个控制器中并使用'valid?'运行验证。 –

回答

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 
+0

我用闪光灯显示出色的错误信息。无论如何,谢谢你帮助我。 – defiant

+1

太好了。顺便说一句,闪存使用会话来存储它的数据。 –

+0

啊,谢谢你让我知道! :) – defiant

相关问题