2015-04-22 4 views
-8

Это мой кодПочему index.html.erb не выполняет мой Ruby, код

<h1>RailsBridgeCorp Open Jobs</h1> 

<% @jobs.each do |job| %> 
    <h3><%= job.title %></h3> 
    <p><%= job.description %></p> 
<% end %> 

Тем не менее я получаю сообщение об ошибке:

неопределенный метод `каждый» для ноль: NilClass

Он не понимает, что я использую ruby ​​в этом файле.

This is the controller

+0

Как выглядит соответствующее действие? –

+0

Вы получаете эту ошибку, потому что она выполняет код ruby. '@ jobs' - нуль. Вы устанавливаете его в контроллере? –

+0

https://github.com/Eibonic/Job-board-lesson Я положил его на github. –

ответ

6

Ваш JobsController перепутались. Ваш index действий находится внутри new действий. Вот исправленный код:

class JobsController < ApplicationController 
    def new 
    @job = Job.new 
    end 

    def index 
    @jobs = Job.all 
    end 

    def create 
    Job.create(job_params) 
    redirect_to jobs_path 
    end 

    private 
    def job_params 
    params.require(:job).permit(:title, :description) 
    end 

end 

Если вы заинтересованы в понимании того, почему Rails оказывал index зрения даже тогда, когда действие не присутствовал, увидеть это http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-by-default-convention-over-configuration-in-action

+0

спасибо, но почему я был забыт? Я больше не могу задавать вопросы на этом сайте, этот сайт отстой! –

+0

Даже я удивлен количеством downvotes. Может быть, эта линия вызвала у вас проблемы - _It не понимает, что я использую ruby ​​в этом файле. Это предполагает, что вы действительно не понимаете, что делаете. Не унывайте, stackoverflow не так уж плохо. –

+1

Хорошо спасибо, я новичок в кодировании и на этом сайте. Я буду учиться на своих ошибках. –

1

заданиям контроллер получил перепутались

это должно быть, как это

class JobsController < ApplicationController 
    def new 
    @job = Job.new 
    end 

    def index 
    @jobs = Job.all 
    end 

    def create 
    Job.create(job_params) 
    redirect_to jobs_path 
    end 

    private 
    def job_params 
    params.require(:job).permit(:title, :description) 
    end 

end 

Тогда вы можете позвонить @jobs в вашем index.html.erb, то он будет работать, попробуйте вот так:

Смежные вопросы