проблема link_to

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

Я хочу отобразить количество продуктов в link_to, link_to является частью partial, отображаемой в application.erb.html проблема в том, что у меня в контроллере приложения есть метод с именем products_on_cart, который возвращает количество продуктов, когда я пытаюсь использовать этот код:

 <%= link_to "<%= products_on_cart%>", :controller=>"carts", :action=>"index"%>
  

rails выдает ошибку:

«синтаксическая ошибка, неожиданный ‘>’
…er=>»carts», :action=>»index»%>»

Я действительно не понимаю, почему, кто-нибудь может мне помочь?

Ответ №1:

Вы не можете использовать <%= .. %> внутри <%= .. %> .

 <%= link_to products_on_cart, [:carts] %>
  

Комментарии:

1. появляется другая проблема, теперь rails не может видеть мой метод products_on_cart, который находится в контроллере приложения

2. в ApplicationController: helper_method :products_on_cart

Ответ №2:

Вы вкладываете теги ERb. Убедитесь, что products_on_cart() доступен в качестве вспомогательного метода, затем перепишите свой link_to код без вложенных тегов ERb следующим образом:

 <%= link_to products_on_cart(), :controller => "carts", :action => "index" %>
  

Чтобы создать products_on_cart() вспомогательный метод, либо переместите его в app/helpers/application.rb , либо объявите его как вспомогательный в вашем контроллере:

 def products_on_cart()
  # method definition goes here
end

helper_method :products_on_cart
  

Если вам нужен доступ только products_on_cart из ваших представлений, а не из ваших контроллеров, предпочтительным способом является его ввод app/helpers/application.rb . Если вам нужно использовать его как в контроллерах, так и в представлениях, вместо этого используйте helper_method подход, описанный выше.