2013-12-23 2 views
1

Я довольно новичок в Rails, и у меня возникли проблемы с привязкой новой страницы html.erb к моим навигационным вкладкам.Как мне связать страницу html.erb?

Я создал приложение, использующее строительные леса с project_controller.rb. У меня, конечно, есть index.html.erb, который отображает мой project_path, он также содержит таблицу всех моих проектов. У меня есть мои новые, редактировать, уничтожать, обновлять и показывать. Показать содержит указанный проект project_path. Хорошо, теперь я попытался создать (2) новые страницы, используя project_controller.rb. Поэтому я пошел и добавил делинквент и дефис закрыл. Оба из них имитируют индекс def, потому что я хочу точно такую ​​же функциональность на этих двух страницах. Я создал (2) новые страницы html.erb, а также имена delinquent.html.erb и closed.html.erb. Я хочу, чтобы эти страницы действовали точно так же, как и индексная страница, но только показывали Delinquent и Closed Projects, а не все проекты, которые доступны, как показано на index.html.erb. У меня есть мой navbar, navbar-inner, nav, nav pull-right все на своем месте. У меня есть (3) ссылки готовы пойти, просто не знаю, как связать мои вновь созданные страницы в последние 2 ссылки:

<li><%= link_to "Active Projects", projects_path></li> 
    <li><%= link_to "Delinquent Projects", '#' %></li> # I want to link this to delinquent.html.erb 
    <li><%= link_to "Closed Projects", '#' %></li> # I want to link this to closed.html.erb 
+0

Кроме того, fyi, вам не хватает тега закрытия '%>' на первом 'link_to' выше. – Donovan

+0

Маршрутизация должна быть моей проблемой. Я попытался добавить delinquent_path вместо '#', и я получаю неопределенную локальную переменную или метод 'delinquent_path. – Twdeveloper

+0

На моих маршрутах.rb, хотя все, что у меня есть, это то, что было создано во время моей внутренней сборки, которая представляет собой ресурсы: проекты. Поэтому я просто подумал, что если бы def defentquent в проектах.controller.rb in взял бы. – Twdeveloper

ответ

1

В контроллере

def index 
    @project = Project.all 
end 

def delinquent 
    @projects = Project.delinquent_projects 
    render :template => :index 
end 

def closed 
    @projects = Project.closed_projects 
    render :template => :index 
end 

вы также можете извлечь содержимое index.html в частичный (кроме названия), и вынести частичные в соответствующих взглядах

в конфигурации/маршрутах. гь (в верхней части файла)

match 'projects/delinquent' => "projects#delinquent", :as => :delinquent_projects 
match 'projects/closed' => "projects#closed", :as => :closed_projects 

ввиду

<li><%= link_to "Active Projects", projects_path %></li> 
<li><%= link_to "Delinquent Projects", delinquent_projects_path %></li> 
<li><%= link_to "Closed Projects", closed_projects_path %></li> 
+0

Так что я попытался набирать 2 строки кода в route.rb и запускал маршруты рейка ....Я получил «Rake aborted! Undefined local variable или method» delinquent_projects »« Я также получаю это »> 'и' block in > 'message – Twdeveloper

+0

Изменен мой ответ. названный маршрут должен быть символом или строкой – usha

+0

Итак, я чувствую, что почти понял. Когда я наводил ссылку на ссылку «Активные проекты», она показывает/Проекты. Нависание над «Делинквент-проектами» показывает проекты/делинквент. Однако, когда я нажимаю на ссылку, я получаю сообщение «Не удалось найти проект с ошибкой id = delinquent». Это имеет смысл, потому что это не проект. Я хочу создать все проекты, такие как Active link show, просто хочу, чтобы представление отображало что-то другое. (На основе того, как я настраиваю страницу delinquent.html.erb) – Twdeveloper

1

rake routes покажет текущие маршруты и их пути. Просто добавьте _path или _url до конца.

1

Вы на правильном пути, вам нужно только немного больше, что вам нужно. Если вы уже добавили следующие действия контроллера в projects_controller.rb,

def delinquent 
end 

def closed 
end 

и вы создали точку зрения, все, что вам нужно сделать, это определить маршруты. Это делается в папке routes.rb в каталоге config. Добавьте эти две строки в файл, и вам должно быть хорошо идти.

get 'delinquent_projects' => 'projects#delinquent', as: 'delinquent_projects' 
get 'closed_projects' => 'projects#closed', as: 'closed_projects' 

Теперь, на ваш взгляд, вы будете иметь доступ к следующим рельсам хелперов

delinquent_projects_path 
closed_projects_path 

Перед тем, как попытаться использовать их, хотя, запускать «грабли» маршруты в терминале, чтобы увидеть, что они были правильно создан.

Удачи, и добро пожаловать в Rails!

+0

Спасибо за ответ. Однако я получаю синтаксические ошибки, когда я пытаюсь ввести в две строки кода файл routes.rb. Я также рассмотрел ответ ниже, я предполагаю, что этим строкам должно предшествовать «матч»? – Twdeveloper

+0

Моя ошибка, я забыл добавить слово «получить» в начало этих маршрутов, теперь это должно сработать для вас. Как вы полагаете, матч также поможет. – wvm2008

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