设计after_sign_in_path

时间:2013-01-06 04:48:27

标签: ruby-on-rails devise routes nested-forms

我在嵌套模型表单中同时创建一个位置和用户。我希望用户被带到刚刚创建的位置ID的位置显示页面。我怎么能这样做?

我知道我可以通过将其放入应用程序控制器来获取位置索引

def after_sign_in_path_for(resource)
      locations_path # <- Path you want to redirect the user to.
    end

我试过

def after_sign_in_path_for(resource)
      location_path(@location) # <- Path you want to redirect the user to.
    end

但它给id的值为nil。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

你应该做的只是

def after_sign_in_path_for(resource)
  location_path(resource) # <- Path you want to redirect the user to.
end

但由于您的resource很可能是用户,因此更安全的是:

def after_sign_in_path_for(resource)
  if resource.class == User
    location_path(resource.location) 
  elsif resource.class == Location
    location_path(resource) 
  end
end

这将处理两种资源类型,并假设您的User与创建的Location相关联。