我刚刚从头开始我自己的rails项目。如果分钟变量设置为某个值,我正在尝试视图显示 hello。
代码现在在控制器中,我希望它在视图中显示输出。 这可能吗? 还是我把它写在视图中?不确定是否做对了。
home_controller.rb
class HomeController < ApplicationController
def index
@minutes = 23
@minutes = params[:minutes]
end
end
索引.html.erb
<% if @minutes == 23 %>
<%= "helllo" %>
<% else %>
Anonymous
<% end %>
@minutes = params[:minutes] || 23
在这个简单的情况下,在视图中放置一些逻辑就足够了,但通常最好添加帮助程序方法(阅读入门指南是个好主意)。
可能您已经看到了应用程序/帮助程序目录,在这些帮助程序中,您可以定义视图层中可用的方法,与视图层相关的方法,但执行一些奇怪或肮脏的事情放在模板文件中。
例如,在您的情况下,您可以有一个/app/helpers/time_helper.rb
:
module TimeHelper
# I know the method name sucks a little
def show_hello_if_minutes_is_23(minutes = @minutes)
if minutes==23
"Hello"
else
"Anonymous"
end
end
end
然后在index.html.erb
模板中使用:
<%= show_hello_if_minutes_is_23 %>
如您所见:
- 您可以阅读方法名称并了解其功能(在高级别)
- 逻辑放在 ruby 方法中
- 该方法采用
minutes
参数,但它是可选的
请记住:通常重复是邪恶的(DRY的事情),但在视野中,有时一次太多了(然而,在这个简单的情况下不是)。
更新:我刚刚看到您将@minutes
变量设置为 23,然后覆盖它,使以前的赋值无用。我不知道您要在控制器中做什么,但是如果您的问题是关于为分钟变量设置默认值,请使用 Yuri 的答案并使用 ||=
运算符:@minutes ||= params[:minutes]
.