2016-08-26 228 views
3

我是Ruby on Rails中的新成員,在Ruby on Rails應用程序中我有點混亂。我已經完成了所有這些事情。在Ruby on Rails中應執行rails應用程序的流程

的routes.rb

Recruitment::Application.routes.draw do 
    get 'hr/internal_employee_page', controller: 'hr', action: 'internal_employee_page' 
    get 'hr/permanent_consultant_page' => 'hr#permanent_consultant_page', as: :permanent_consultant_page 
end 

hr_controller.rb

class HrController < ApplicationController 

    def internal_employee_page 
    @employees = OfferLetter.all 
    # render :text => @employees.inspect   
    end 

    def employee_details 
    @employees = OfferLetter.all 
    end 
end 

_hr_page.html.erb

<%= render 'hr/dashboard'%> <%= render 'hr/internal_employee_page'%> 

_internal_employee_page.html.erb

<div id="job_details"> 
    <%= render "hr/employee_details" %> 
</div> 

_employee_details.html.erb

<% @employees.each do |emp| %> 
    <h3> Employee Name : <%= emp.full_name %> </h3> 
<% end %> 

然後我得到這個錯誤:

undefined method `each' for nil:NilClass. 

當我做了跟蹤,我發現hr_controller.rb沒有執行。如果我在hr_controller.rb中註釋掉所有內容,那麼我會得到相同的錯誤。所以請告訴我我做錯了什麼,解決方案是什麼。

回答

0

Rails使用與控制器方法相同的名稱查找視圖。從internal_employee_page.html.erb文件的名稱中刪除下劃線。你使用下劃線作爲偏色。

internal_employee_page.html.erb

<div id="job_details"> 
    <% @employees.each do |emp| %> 
    <%= render partial: "hr/employee_details", locals: {emp: emp} %> 
    <% end %> 
</div> 

_employee_details.html.erb

<h3> Employee Name : <%= emp.full_name %> </h3> 

這可能是值得一讀the guide關於渲染的佈局和諧音。

nil錯誤表示活動記錄調用OfferLetter.all失敗。你有沒有設置d/b表,運行遷移等?嘗試在Rails控制檯中運行該命令,並看看你得到了什麼。

+0

是的,我得到了解決方案非常感謝你的瑪格。請你能告訴我,我應該遵循哪本書來學習ROR。 –

+0

如果我的回答對你有幫助,請點擊'檢查'圖標'接受'它。有大量的在線資源,很多人喜歡Michael Hartl的Ruby on Rails教程。我鏈接到的指南也很好。 – margo

+0

謝謝瑪格。你有Facebook帳戶,請在臉書上發給我朋友請求(/jamiit.khusvaha)。 –