Задать вопрос

Как правильно использовать хелперы в Ruby on Rails?

Добрый день! Заранее прошу прощения, если ошибусь в терминологии: начинающий в RoR, изучаю язык методом тыка и усиленного изучения поисковых запросов, но на этот вопрос внятного ответа я получить не смог, к сожалению.

Есть две таблицы Journals (список журналов) и Publications (список выпусков для каждого журнала), связь - один ко многим. В RoR создал соответствующие объекты, для journals вообще никаких проблем не было - удалось создать view для создания, редактирования, просмотра, показа списка. Сейчас подступаюсь к созданию аналогичных view для publications, и пару раз натыкался на следующую проблему с использованием хелперов в .html.erb.

Я хочу при показе журнала (show.html.erb для journals) показывать кнопку "Перейти к списку всех публикаций журнала". Как я понимаю, необходимо написать link_to следующего вида:

<%= link_to 'К списку публикаций журнала', journal_publications_path (@journal) %>


Здесь journal_publications_path - хелпер, который, как я понял, должен был создаться на основе роутинга в RoR (выкладываю весь роутинг, чтобы случайно не отрезать важный кусок):

Prefix Verb   URI Pattern                                           Controller#Action
        new_user_session GET    /users/sign_in(.:format)                              devise/sessions#new
            user_session POST   /users/sign_in(.:format)                              devise/sessions#create
    destroy_user_session DELETE /users/sign_out(.:format)                             devise/sessions#destroy
           user_password POST   /users/password(.:format)                             devise/passwords#create
       new_user_password GET    /users/password/new(.:format)                         devise/passwords#new
      edit_user_password GET    /users/password/edit(.:format)                        devise/passwords#edit
                         PATCH  /users/password(.:format)                             devise/passwords#update
                         PUT    /users/password(.:format)                             devise/passwords#update
cancel_user_registration GET    /users/cancel(.:format)                               devise/registrations#cancel
       user_registration POST   /users(.:format)                                      devise/registrations#create
   new_user_registration GET    /users/sign_up(.:format)                              devise/registrations#new
  edit_user_registration GET    /users/edit(.:format)                                 devise/registrations#edit
                         PATCH  /users(.:format)                                      devise/registrations#update
                         PUT    /users(.:format)                                      devise/registrations#update
                         DELETE /users(.:format)                                      devise/registrations#destroy
         persons_profile GET    /persons/profile(.:format)                            persons#profile
        article_comments GET    /articles/:article_id/comments(.:format)              comments#index
                         POST   /articles/:article_id/comments(.:format)              comments#create
     new_article_comment GET    /articles/:article_id/comments/new(.:format)          comments#new
    edit_article_comment GET    /articles/:article_id/comments/:id/edit(.:format)     comments#edit
         article_comment GET    /articles/:article_id/comments/:id(.:format)          comments#show
                         PATCH  /articles/:article_id/comments/:id(.:format)          comments#update
                         PUT    /articles/:article_id/comments/:id(.:format)          comments#update
                         DELETE /articles/:article_id/comments/:id(.:format)          comments#destroy
                articles GET    /articles(.:format)                                   articles#index
                         POST   /articles(.:format)                                   articles#create
             new_article GET    /articles/new(.:format)                               articles#new
            edit_article GET    /articles/:id/edit(.:format)                          articles#edit
                 article GET    /articles/:id(.:format)                               articles#show
                         PATCH  /articles/:id(.:format)                               articles#update
                         PUT    /articles/:id(.:format)                               articles#update
                         DELETE /articles/:id(.:format)                               articles#destroy
    journal_publications GET    /journals/:journal_id/publications(.:format)          publications#index
                         POST   /journals/:journal_id/publications(.:format)          publications#create
 new_journal_publication GET    /journals/:journal_id/publications/new(.:format)      publications#new
edit_journal_publication GET    /journals/:journal_id/publications/:id/edit(.:format) publications#edit
     journal_publication GET    /journals/:journal_id/publications/:id(.:format)      publications#show
                         PATCH  /journals/:journal_id/publications/:id(.:format)      publications#update
                         PUT    /journals/:journal_id/publications/:id(.:format)      publications#update
                         DELETE /journals/:journal_id/publications/:id(.:format)      publications#destroy
                journals GET    /journals(.:format)                                   journals#index
                         POST   /journals(.:format)                                   journals#create
             new_journal GET    /journals/new(.:format)                               journals#new
            edit_journal GET    /journals/:id/edit(.:format)                          journals#edit
                 journal GET    /journals/:id(.:format)                               journals#show
                         PATCH  /journals/:id(.:format)                               journals#update
                         PUT    /journals/:id(.:format)                               journals#update
                         DELETE /journals/:id(.:format)                               journals#destroy
          articles_index GET    /articles/index(.:format)                             articles#index
                    root GET    /                                                     articles#index


Но при создании такой ссылки выдаётся следующая ошибка на данной строке:

SyntaxError in JournalsController#show
/home/rubyuser/ruby/blog/app/views/journals/show.html.erb:14: syntax error, unexpected ( arg, expecting keyword_do or '{' or '(' ...а', journal_publications_path (journal_id), :class => 'journ... ... ^ /home/rubyuser/ruby/blog/app/views/journals/show.html.erb:14: syntax error, unexpected ',', expecting ')' ...publications_path (journal_id), :class => 'journalslist-gray... ... ^


При попытке изменения @journal на @journal.journal_id или @journal.id ошибка никуда не исчезала. Помогите, пожалуйста, где я не правильно понимаю?

ТТХ сервера: Ubuntu 14.04, Ruby 2.2.1, Rails 4.2.4, приложение крутится на WEBrick.
  • Вопрос задан
  • 737 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
ibub1ik
@ibub1ik
Ruby/Rails Dev => Elixir
У вас лишний пробел перед скобкой. Должно быть
<%= link_to 'К списку публикаций журнала', journal_publications_path(@journal) %>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@antooninc Автор вопроса
О как, привык к Delphi, у которого можно между названием процедуры и передающимися переменными ставить сколько угодно пробелов. Премного благодарю за помощь, запомню.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы