由于我正在使用api,我需要取出Devise的registrationsController创建动作。除了一个,我已经以各种方式使用它。出于某种原因,set_flash_message方法返回错误:


 NoMethodError - undefined method`set_flash_message!' for#< Users :: RegistrationsController:0x007f91f8e8b070>:
 app / controllers / users / registrations_controller.rb:28:in“create”



 以下是控制器代码:
& #xA;
 class Users :: RegistrationsController<设计:: RegistrationsController
 def create
 build_resource(sign_up_params)
 resource.save&#XA!;如果block_given生成资源?
 if resource.persisted?
把“资源坚持”.green
 if resource.active_for_authentication?
 flash [:success] =“欢迎!您已成功注册。”
 #set_flash_message! :notice,:signed_up
 sign_up(resource_name,resource)
 respond_with resource,location:after_sign_up_path_for(resource)
否则
 “不确定这个”.blue
 set_flash_message! :notice,:“signed_up_but _#{resource.inactive_message}”
 #flash [:danger] =“signed_up_but _#{resource.inactive_message}”
 expire_data_after_sign_in&#XA!; respond_with resource,location:after_inactive_sign_up_path_for(resource)
端
否则
把“资源没有坚持”.red
 clean_up_passwords资源
 set_minimum_password_length
 #response_with resource
把“我们现在知道”.on_red
渲染'新'#不确定这是否有效
端
结束
结束



 我现在以正常方式输入flash消息,但它已经导致了一些问题。如何让set_flash_message工作?

答案 0 :(得分:4)
我遇到了同样的问题。事实证明,最近在Devise(2016年1月28日)中更改了此功能。 因此,您需要更新您在应用中使用的Devise版本,或使用旧方法调用set_flash_message,即:
set_flash_message :notice, :signed_up if is_flashing_format?