登录后输入的页面使用Ruby on rails设置

时间:2014-07-15 21:16:28

标签: ruby-on-rails ruby devise routes

我正在建立一个人们可以分享内容的平台。当人们登录时我遇到问题,因为我想重定向到特殊页面,但我无法弄明白,希望有人可以帮助我。

我还有另一个问题,因为我想在导航栏上创建一个页面,人们在登录时可以看到他们的图钉。我已经找到了他们可以看到每个引脚的位置,但可以弄清楚如何显示自己的引脚。我知道它是用的:

<li><%= link_to "Home", pin_path %></li>

但这会产生错误,即:

No route matches {:action=>"show", :controller=>"pins"}

rake routes显示在:

下方
                   users_show GET    /users/show(.:format)          users#show
                         pins GET    /pins(.:format)                pins#index
                              POST   /pins(.:format)                pins#create
                      new_pin GET    /pins/new(.:format)            pins#new
                     edit_pin GET    /pins/:id/edit(.:format)       pins#edit
                          pin GET    /pins/:id(.:format)            pins#show
                              PUT    /pins/:id(.:format)            pins#update
                              DELETE /pins/:id(.:format)            pins#destroy
          thank_you_inquiries GET    /inquiries/thank_you(.:format) inquiries#thank_you
                    inquiries POST   /inquiries(.:format)           inquiries#create
                  new_inquiry GET    /inquiries/new(.:format)       inquiries#new
             new_user_session GET    /users/sign_in(.:format)       devise/sessions#new
                 user_session POST   /users/sign_in(.:format)       devise/sessions#create
         destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy
     cancel_user_registration GET    /users/cancel(.:format)        devise/registrations#cancel
            user_registration POST   /users(.:format)               devise/registrations#create
        new_user_registration GET    /users/sign_up(.:format)       devise/registrations#new
       edit_user_registration GET    /users/edit(.:format)          devise/registrations#edit
                              PUT    /users(.:format)               devise/registrations#update
                              DELETE /users(.:format)               devise/registrations#destroy
                         user        /users/:id(.:format)           users#show
                        about GET    /about(.:format)               pages#about
                      contact GET    /contact(.:format)             pages#contact
                      profile        /profile(.:format)             profile#show
                         root        /                              pages#home

希望有人可以帮我解决我的两个问题

2 个答案:

答案 0 :(得分:0)

你必须在pin_path中添加:id,如下所示:

  

pin_path(pin.id)

答案 1 :(得分:0)

1)要在登录后重定向到特定页面,您应该覆盖应用程序控制器中的after_sign_in_path_for(在这种情况下,将current_user_path替换为您要重定向到的页面):

def after_sign_in_path_for(resource)
  current_user_path
end

[来源https://github.com/plataformatec/devise/wiki/How-To%3A-Redirect-to-a-specific-page-on-successful-sign-in-and-sign-out]

2)如果您只想显示当前登录用户的引脚,则应修改pins_controller.rb,以便索引操作仅显示用户引脚:

def index
   @pins = current_user.pins
end

然后链接到导航栏中的pins_path

<li><%= link_to "Home", pins_path %></li>

请务必在您的pins_controller中添加before_filter,以保证用户已通过身份验证(因此可以解析current_user)

before_action :authenticate_user!