2015-02-01 2 views
0

, пожалуйста, помогите решить проблему.Как создать ссылку определенного типа?

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

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> 

реки маршруты:

.............. 
......... 
     news_index GET /news/index(.:format)   news#index 
     news_show GET /news/show(.:format)   news#show 

............ 
.......... 
+0

Вставить 'грабли routes' контроллера новостей –

+0

news_show GET /news/show(.:format) новости # показать – stackow7

ответ

0

Используйте реки маршруты и проверить news_path маршрута существует. также первым параметром функции link_to должно быть имя ссылки.

+0

news_show GET/Новости/показать (.: format) news # show – stackow7

+1

Затем используйте news_show_path.and также используйте его во втором параметре, вам не нужно передавать контроллер и действие sepratly. –

1

Попробуйте так: -

<% @news.each do |news_item| %> 
<%= link_to "Qwerty", news_show_path(id: news_item.id) %> 
<% end %> 
+0

Если вы хотите сделать это еще более «Rails-y», вам не нужно указывать 'id', но вы можете просто передать сам объект:' link_to "Qwerty", news_show_path (news_item) ' – jeffdill2

-1
<% @news.each do |news_item| %> 
    <%= link_to(url_for({controller: "news", action: "show", id: news_item.id})) do %> 
     <div> 
     <span>title:</span> 
     <span><%= news_item.title %></span> 
     </div> 

     <div> 
     <span>Date:</span> 
     <span><%= news_item.created_at.to_s(:ru_datetime_for_news) %></span> 
     </div> 
    <% end %> 

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

    <br> 
    <br> 
     <br> 
<% end %> 
Смежные вопросы