2012-05-31 15 views
0

我刚从头开始创建自己的rails项目。如果minutes变量设置为特定值,我正在试图显示hello。Rails视图和控制器,(if/else语句)

The code现在在控制器中,我希望它在视图中显示输出。这可能吗?或者我把它写在视图中?不确定是否正确。

home_controller.rb

class HomeController < ApplicationController 
    def index 
    @minutes = 23 
    @minutes = params[:minutes] 
    end 
end 

index.html.erb

<% if @minutes == 23 %> 
    <%= "helllo" %> 
<% else %> 
    Anonymous 
<% end %> 
+3

我想,没有人知道你在问什么。 – ABrukish

+0

嗨,欢迎来到StackOverflow,我已经编辑你的问题与要点代码并添加了你的疑问(从要点出发)关于如何以正确的方式来做到这可能是你的问题。 –

+0

需要多一个投票来批准编辑(新的SO功能?) – DGM

回答

3
@minutes = params[:minutes] || 23 
2

它在这个简单的情况下,把一些逻辑视图到足够多的好,但通常是更好添加帮手方法(阅读Getting Started指南是一个好主意)。

也许你已经看到了app/helpers目录,在这些帮助文件中,你可以定义在视图层中可用的方法,与视图层相关的方法,但是做一些奇怪或肮脏的东西来放入模板文件。

例如,在你的情况,你可以有一个/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 %> 

正如你可以看到:

  1. 你可以读取方法名称并理解它的作用(高级别)
  2. 逻辑放在一个红宝石方法
  3. 的方法采取minutes说法,但它是可选的

请记住:通常重复是邪恶的(干的事情),但鉴于土地有时候一个时间太长很多(但不是在这个简单的情况下)。

UPDATE:我刚刚看到你把@minutes变量设置为23,然后你覆盖它使以前的任务无用。我不知道你在控制器中想要做什么,但是如果你的问题是关于为分钟变量设置默认值,请使用Yuri's answer并使用||=运算符:@minutes ||= params[:minutes]

+0

嘿,是的,我认为我只是变得有点困惑等,你的帮手方法似乎是我在寻找什么。我如何在视图中显示这个?它会像<%show_hello_if_minutes_is_23%>或<%TimeHelper%> – Namenone

+0

对不起,我修复了答案标记,现在您可以看到如何在视图中使用助手:<%= show_hello_if_minutes_is_23%>,请注意等号,这意味着输出必须放在模板中。 –