我正在學習 Ruby on Rails,作為練習的一部分,我正在構建一個 Bug Tracker System,它有一個經理、開發人員和 QA。
我想在他的主螢屏上顯示經理創建的所有專案。這些專案存在于表專案中。

在我的 manager_controller 中,我有以下代碼:
class ManagerController < ApplicationController
def index
@projects = Project.all
end
def create
end
end
這是我在視圖/管理器中的 index.html.erb:
<div class="container">
<h1>Manager's Feed</h1>
<p>Hello <%=current_user.username%></p>
<%= link_to "Create Project", new_project_path, :class => "btn btn-success"%>
<table id='employee-table' >
<thead >
<tr>
<th>ID</th>
<th>Title</th>
<th colspan="2"></th>
</tr>
</thead>
<tbody>
<% @projects.each do |project| %>
<tr>
<td><%= project.id %></td>
<td><%= project.title %></td>
</tr>
<% end %>
</tbody>
</table>
<div>
<%= link_to "Logout", destroy_user_session_path, :method => :delete %>
</div>
</div>
但這給了我以下錯誤:

我無法理解為什么 @projects 是 Null,因為我在控制器中定義了它。誰能幫我解決這個問題?
更新 1 我的 routes.rb 檔案:
Rails.application.routes.draw do
get 'project/show'
resources 'project'
resources 'manager'
resources 'developer'
resources 'qa'
devise_for :users
get 'home/index'
root to: "home#index"
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
家庭控制器:
class HomeController < ApplicationController
before_action :authenticate_user!
def index
@projects = Project.all
if current_user.manager?
render '../views/manager/index.html.erb'
end
if current_user.developer?
render '../views/developer/index.html.erb'
end
if current_user.quality_assurance?
render '../views/qa/index.html.erb'
end
end
end
uj5u.com熱心網友回復:
在你的堆疊上,你可以在底部閱讀app/controllers/home_controller.rb
您正在初始化@projects.managers_controller.rb
在正確的控制器上使用它。
class HomeController < ApplicationController
def index
@projects = Project.all
end
end
您的默認路由由root to: "home#index"指向HomeController#index. 在那里,您使用render的是簡單地“顯示”內容。我建議使用redirect_to以下方式將流重定向到正確的控制器:
class HomeController < ApplicationController
before_action :authenticate_user!
def index
@projects = Project.all
if current_user.manager?
redirect_to managers_path
end
if current_user.developer?
redirect_to developers_path
end
if current_user.quality_assurance?
redirect_to qas_path
end
end
end
您可以找到*_paths我運行時使用的所有值rails routes。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/426766.html
