2016-08-26 189 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)。 –