Как сформировать ссылку определённого вида?

Рейтинг: 1Ответов: 1Опубликовано: 01.02.2015

Помогите, пожалуйста, решить проблему.

Есть контроллер:

class NewsController < ApplicationController
  def index
    #@news = News.all.order(created_at: :desc)
    @news = News.page(params[:page])
  end

  def show

  end  
end

Я пытаюсь сформировать ссылку типа:

<%= link_to 'More', controller: "news", action: "show", id: news_item.id %>

но многострочную. Для этого создаю следующий шаблон:

<% @news.each do |news_item| %>
    <%= link_to(news_path, { controller: "news", action: "show", id: news_item.id }) do %>
        <span>qwerty</span>
    <% end %>
<% end %>

В результате получаю следующее сообщение об ошибке:

NameError in News#index
Showing /home/kalinin/rails/visit/app/views/news/index.html.erb where line #4 raised:

undefined local variable or method `news_path' for #<#<Class:0x007f221c8a0738>:0x007f221c391dc8>

Ответы

▲ 2Принят

"undefined local variable or method 'news_path'" -- У вас 'news_path' не существует. Думаю, имеется в виду путь к новостям, значит, вам стоит проверить ваши маршруты. Копайте routes.rb и команду 'rake routes'.

ЗЫ: Ссылку можно короче написать: link_to('text', news_path(news_item))

ЗЗЫ: Учтите, что английское слово news не имеет множественной формы (точнее наоборот), значит ссылка на индексную страницу будет: news_index_path()