#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
подход, описанный выше.