2015-08-13 2 views
-1

Я пытаюсь создать сайт для тренеров по бейсболу, чтобы следить за расписанием их команды. Я пытаюсь сделать индекс, чтобы тренеры могли видеть все свои будущие игры. Однако игры не появляются. Фон и заголовок все еще существуют, а не введенные данные. Вот мой код:Простая помощь базы данных и индексов

контроллер приложения

class ApplicationController < ActionController::Base 
# Prevent CSRF attacks by raising an exception. 
# For APIs, you may want to use :null_session instead. 
protect_from_forgery with: :exception 
def show 
    @schedule = Schedule.find_by_id(params['id']) 
end 

def create 
    s = Schedule.new 
    s.date = params['date'] 
    s.time = params['time'] 
    s.location = params['location'] 
    s.oppo = params['oppo'] 
    s.result = params['result'] 
    redirect_to "/landing" 
end 

def edit 
    @schedule = Schedule.find_by_id(params['id']) 
end 

def update 
    s = Schedule.find_by_id(params['id']) 
    s.date = params['date'] 
    s.time = params['time'] 
    s.location = params['location'] 
    s.oppo = params['oppo'] 
    s.result = params['result'] 
    redirect_to "/landing" 
end 

def destroy 
    s = Schedule.find_by_id(params['id']) 
    s.destroy 
end 

def index 
    @schedule = Schedule.all 
end 

end 

индекс

<h1> Schedule </h1> 
<% @schedule.each do |schedule| %> 
    <table> 
    <tr> 
     <th><h1><%[email protected]%></h1></th> 
     <th><%[email protected]%></th> 
     <th><%[email protected]%></th> 
     <th><%[email protected]%></th> 
     <th><%[email protected]%></th> 
    </tr> 
    </table> 
<% end %>` 

маршруты

Rails.application.routes.draw do 
get '/index' => 'application#index' 
get '/landing' => 'application#landing' 
get '/new_game' => 'application#new' 
get '/create' => 'application#create' 
end 

код формы

<h2 class="text-center">Add a Game</h2> 

<h4 class="text-center"> 
<form action="/create"> 
<p> 
    <input type="text" name="date" placeholder="Date"> 
    </p> 

    <p> 
    <input type="text" name="time" placeholder="Time"> 

    <p> 
    <input type="text" name="location" placeholder="Location"> 
    </p> 
    <p> 
    <input type="text" name="oppo" placeholder="Opponent"> 
    </p> 
<p> 
    <input type="text" name="result" placeholder="Score"> 
    </p> 
    <p> 
    <input type="submit"> 
    </p> 
    </h4> 
</form> 
+0

У вас есть какие-либо области с областью по умолчанию помещенной на модели 'Schedule'? – sjagr

+0

Буду честным, я понятия не имею, что это значит. –

ответ

0

Вы вызываете выставленный объект коллекции @schedule, который вы определили в своем контроллере в цикле. Вместо этого, вы должны получить доступ к schedule лямбде, который вы определили с помощью each метода:

<h1> Schedule </h1> 
<% @schedule.each do |schedule| %> 
    <table> 
    <tr> 
     <th><h1><%=schedule.date%></h1></th> 
     <th><%=schedule.time%></th> 
     <th><%=schedule.location%></th> 
     <th><%=schedule.oppo%></th> 
     <th><%=schedule.result%></th> 
    </tr> 
    </table> 
<% end %> 

В следующий раз, чтобы вы не запутались, вы должны множественным число коллекции:

def index 
    @schedules = Schedule.all 
end 

Тогда ваш взгляд будет :

<h1> Schedule </h1> 
<table> 
<% @schedules.each do |schedule| %> 
    <tr> 
     <th><h1><%=schedule.date%></h1></th> 
     <th><%=schedule.time%></th> 
     <th><%=schedule.location%></th> 
     <th><%=schedule.oppo%></th> 
     <th><%=schedule.result%></th> 
    </tr> 
<% end %> 
</table> 

Это небрежно, но структура вашего стола является отвратительной. Вы должны использовать только th только для ячеек заголовка и td для контентных ячеек. Теги table также должны быть за пределами вашего цикла, чтобы вы не объявляли целую таблицу для каждой новой строки, я исправил эту проблему в своем втором примере, который я вам показал. Также должен быть только один тег h1 на всей странице .. но это целая другая область надлежащего веб-разработки.

EDIT: Вы упускаете save вызов в методе create:

def create 
    s = Schedule.new 
    s.date = params['date'] 
    s.time = params['time'] 
    s.location = params['location'] 
    s.oppo = params['oppo'] 
    s.result = params['result'] 
    if s.save 
    redirect_to "/landing" 
    else 
    # Error of some sort 
    end 
end 
+0

Он все еще не работает –

+0

@ M.Overby Определите, что «не работает». Вы должны быть более наглядными, опубликовать обновленный код и, возможно, итоговый исходный HTML-код. В вашей таблице есть данные, верно? – sjagr

+0

Хорошо, прости, я новичок в этом. Я узнал, что он работает, если я вручную ввожу его в консоль rails. Итак, я предполагаю, что это проблема с моей формой. Вот код моей формы. –

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