在结账控制器上,如果用户没有填写他们的地址,他应该被重定向到地址路径,但是在重定向rails输出之后:
#的未定义方法`new_user_address_path'
结帐代码:
def checkout
@order = current_user.cart.orders.find(params[:id])
if current_user.address.blank?
redirect_to new_user_address_path(current_user)
flash[:error] = 'Antes de prosseguir por favor, preencha o seu endereço'
end
end
我添加了一个辅助方法,但它没有用。为什么控制器会将路径警告为方法?
路线
用户地址
user_address POST /users/:user_id/address(.:format) address#create
new_user_addres GET /users/:user_id/address/new(.:format) address#new
结帐
orders GET /orders(.:format) orders#index
order PUT /orders/:id(.:format) orders#update
DELETE /orders/:id(.:format) orders#destroy
答案 0 :(得分:0)
问题出在这里
resources :users, only: [:new, :create, :edit, :update, :show] do
resources :address, only: [:new, :create]
end
默认情况下,带有resources
的{{1}}方法将第一个参数视为复数,因此它会尝试删除额外的s
以生成成员网址,因此{{1路径。
为了解决这个问题,我建议重命名
s
到
new_user_addres
并在您的变形中添加不规则复数
resources :users, only: [:new, :create, :edit, :update, :show] do
resources :address, only: [:new, :create]
end
请注意,您必须重新启动服务器