将Devise用户ID放在路由中

时间:2015-09-04 16:30:04

标签: ruby-on-rails devise

我希望将用户ID放在我的应用程序URL中。我已经设置了所有设置的默认配置,我想要完成的是在用户登录时拥有一个URL,如下所示:

application.com/ 用户ID /

当他们没有登录时

application.com/

这可能与Devise有关吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您只需创建一个查找:id参数的路由,然后确保在导航到路径时传递:id参数。这是一个简单的例子:

routes.rb

get '/page', to: 'pages#page', as: :guest_page
get '/:id/page', to: 'pages#page', as: :user_page

<强> page.html.erb

<% if user_signed_in? %>

  <%= link_to "page for logged in user", user_page_path(current_user) %>

<% else %>

  <%= link_to "page for guest user", guest_page_path %>

<% end %>

此外,如果有许多路径,您将需要在视图外部将此逻辑提取到辅助方法或装饰器中。

答案 1 :(得分:0)

实际上路由比设计更多。 范围您的路线

class BarView(CreateAPIView):
    serializer_class = BarSerializer
    queryset = Bar.objects.all()

    def perform_create(self, serializer):
        return serializer.save(user=self.request.user, foo=serializer.foo_object)

http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Scoping.html