0

我是rails和ruby的新手。我对rails中的一些约定感到很困惑~

我写了一个这样的方法:

def show_session_counter?
  if session[:counter] && session[:counter] > 4
  end
end

...并想像这样使用 application.html.erb 中的方法:

<% if show_session_counter? %>
      <li><a href="#"><%= pluralize session[:counter], "time" %></a></li>
<% end %>

首先,我尝试将方法放在 application.controller.rb 中,因为我认为该方法将在 application.html.erb 中使用。我试图把它作为一种普通的方法和一种私人的方法。都不工作。

然后我将该方法放在 application_helper.rb 中,它就可以工作了。

所以我的问题是:为什么第一种方法行不通?这里有任何“rails约定”吗?

非常感谢!

4

1 回答 1

1

当您将方法放入控制器并希望在视图中使用它时,您需要将其声明为helper_method.

helper_method :show_session_counter?

def show_session_counter?
  if session[:counter] && session[:counter] > 4
  end
end
于 2013-01-12T07:46:04.277 回答