0

我得到的错误是:找不到没有 ID 的用户

当他们登录时,我实际上是在尝试让用户的课程在他们的主页上列出。但是我无法让@用户在控制器中正常工作,我相信这是一个路由错误,但不确定

静态页面控制器

class StaticPagesController < ApplicationController
 def home
  @user = User.find(params[:id]) <<<here is the problem
  @courses = @user.courses
 end
end

查看部分

<div class="row">
 <div class="span8">
   <% if @courses.any? %>
  <ul class="courses">
    <%- @courses.each do |course| %>
    <%= link_to course.title, course_path(course) %>
    <%- end%>
  </ul>
   <% end %>
 </div>
 </div>

路由.rb

Serenity::Application.routes.draw do

root to: 'static_pages#home' 

# match '/signup', to: 'users#new'
# match '/signin', to: 'sessions#new'
# match '/signout', to: 'sessions#destroy', via: :delete
match '/help', to: 'static_pages#help'
match '/about', to: 'static_pages#about'
match '/contact', to: 'static_pages#contact'

devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)

devise_for :users
ActiveAdmin.routes(self)

resources :users do
  member do
    get :courses
  end
end
resources :courses
resources :assignments, only: [:create, :destroy]
4

3 回答 3

1

params您的主页上没有任何内容。使用 Devise 的内置current_user方法。

于 2013-08-04T00:44:06.340 回答
1

您已经将根页面转到static_pages#home,但在这种情况下没有id参数,params[:id]返回也是nil如此,所以这就是传递给 的内容find。假设您想要访问id当前登录用户的 ,您需要以其他方式获取它,如http://ruby.railstutorial.org/book/ruby-on-rails-tutorial中所述。current_user在该教程中搜索。

于 2013-08-03T17:54:09.790 回答
0

查看您的路线,我可以看到您正在使用Devise身份验证。这意味着您很可能已经有一个助手,称为current_user为您提供User当前登录的信息。

我猜你正试图在主页上显示当前用户的所有课程。所以像这样改变你的控制器动作:

class StaticPagesController < ApplicationController
 def home
  @courses = current_user.courses
 end
end
于 2013-08-03T18:50:07.447 回答