0

我刚刚从头开始我自己的 Rails 项目。如果分钟变量设置为某个值,我正在尝试视图显示你好。

代码现在在控制器中,我希望它在视图中显示输出。这可能吗?还是我把它写在视图中?不确定做对了。

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 %>
4

2 回答 2

3
@minutes = params[:minutes] || 23
于 2012-05-31T12:46:45.633 回答
2

在这种简单的情况下,在视图中添加一些逻辑就足够了,但通常最好添加辅助方法(阅读入门指南是个好主意)。

可能您已经看过 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. 逻辑被放入 ruby​​ 方法中
  3. 该方法接受一个minutes参数,但它是可选的

请记住:通常重复是邪恶的(干燥的东西),但在视野中,有时一次太多了(但在这个简单的情况下不是)。

更新:我刚刚看到您将@minutes变量设置为 23,然后您将其覆盖,从而使先前的分配无用。我不知道您要在控制器中做什么,但如果您的问题是关于为分钟变量设置默认值,请使用Yuri 的答案并使用||=operator: @minutes ||= params[:minutes]

于 2012-05-31T12:47:52.887 回答