Rails 尽管使用 if then 语句,但仍出现双重渲染错误
Rails double render error despite using if then statement
我经常同时使用 render
和 redirect_to
,但在 if...then
语句中结合使用,因此默认情况下操作只有 1。不确定为什么在这种情况下不起作用与设计。
我需要做的是用户是否被确认,在s/he注册成功后我需要立即POST到另一个控制器来创建一些其他的东西,这就是为什么redirect_to 是一样的。但是我收到 DoubleRender
错误
谢谢!
供您参考,这是设计代码:
# POST /resource
def create
build_resource(sign_up_params)
resource.save
yield resource if block_given?
if resource.persisted?
if resource.active_for_authentication?
set_flash_message :notice, :signed_up if is_flashing_format?
sign_up(resource_name, resource)
respond_with resource, location: after_sign_up_path_for(resource)
else
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_flashing_format?
expire_data_after_sign_in!
respond_with resource, location: after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
set_minimum_password_length
respond_with resource
end
end
然后我的代码:
def after_sign_up_path_for(resource)
redirect_to "/plan_date_create"
end
def after_inactive_sign_up_path_for(resource)
redirect_to "/plan_date_create"
end
respond_with
进行渲染,然后 after_sign_up_path_for
和 after_inactive_sign_up_path_for
进行重定向,您同时调用 respond_with
和其中一个方法在同一行代码上。
我经常同时使用 render
和 redirect_to
,但在 if...then
语句中结合使用,因此默认情况下操作只有 1。不确定为什么在这种情况下不起作用与设计。
我需要做的是用户是否被确认,在s/he注册成功后我需要立即POST到另一个控制器来创建一些其他的东西,这就是为什么redirect_to 是一样的。但是我收到 DoubleRender
错误
谢谢!
供您参考,这是设计代码:
# POST /resource
def create
build_resource(sign_up_params)
resource.save
yield resource if block_given?
if resource.persisted?
if resource.active_for_authentication?
set_flash_message :notice, :signed_up if is_flashing_format?
sign_up(resource_name, resource)
respond_with resource, location: after_sign_up_path_for(resource)
else
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_flashing_format?
expire_data_after_sign_in!
respond_with resource, location: after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
set_minimum_password_length
respond_with resource
end
end
然后我的代码:
def after_sign_up_path_for(resource)
redirect_to "/plan_date_create"
end
def after_inactive_sign_up_path_for(resource)
redirect_to "/plan_date_create"
end
respond_with
进行渲染,然后 after_sign_up_path_for
和 after_inactive_sign_up_path_for
进行重定向,您同时调用 respond_with
和其中一个方法在同一行代码上。