1

免责声明:我是 Rails n00b。我正在玩一个简单的辅助函数,它没有做我想做的事情。

  • 我有一个名为“webform”的模型,带有一些文本字段(名称、地址等)
  • 我正在尝试使用辅助函数来测试 if 语句(即'is the :address =='10')
  • 这是辅助功能

    def webforms_helper
      if :address == 10
        print "Address is 10"
      else
        print "Address is not 10"
      end   
    end
    
  • 在我的“显示”视图中,我已经合并了辅助函数<%= webforms_helper %>

  • 我加载了网络应用程序,没有出现任何错误——但是,它没有打印出“地址为 10”或“地址不是 10”
  • 我也没有成功使用 puts (并检查控制台)而不是 print

  • 有什么想法吗?我为新手问题道歉;)

4

3 回答 3

2

首先,一个合适的助手应该是这样的:

module ApplicationHelper
  def myformchecker(ahash)
     if ahash[:address] == '10'
        return 'Address is 10'
     end
  end
end

然后在你的控制器中:

class ApplicationController < ActionController::Base
  helper: application
  ...
end

那么在你看来:

<%= myformchecker(params) %>

因此,如果视图是响应表单提交而呈现的,并且表单具有以下内容:

<%= text_field_tag :address %>

当用户填写表格并将字符串“10”作为地址时,您的视图中将生成“地址为 10”。

于 2012-06-15T14:31:25.047 回答
1

嗯,你的练习不是很清楚,但是像这样......

def webforms_helper 
  if :address == 10 
    print "Address is 10" 
  else 
    print "Address is not 10" 
  end
end

出于 1 个原因,永远不会将任何内容打印到 Rails 视图,您正在使用 puts 和 print 方法,这两个将输出到控制台。您必须返回字符串本身,这样做...

def webforms_helper 
  if :address == 10 
    "Address is 10" 
  else 
    "Address is not 10" 
  end
end

我知道您正在做一个简单的演示,但是将参数传递给 Helper 是个好主意。这就是你 99% 的时间会做的事情。

def webforms_helper(address)
  if address == 10 
    #return something meaningful as string to the view
  else 
    #return something meaningful as string to the view too.
  end
end
于 2012-06-15T14:21:01.513 回答
0

您应该将信息传递给帮助者,以便帮助者为您做出决定。

# app/views/webforms/show.html.erb
<%= webforms_helper(address) %>

# app/helpers/webform_helper.rb
module WebformHelper
  def webforms_helper(address)
    if address == 10
      "Address is 10"
    else
      "Address is not 10"
    end
  end
end

如果您刚开始使用 Rails,我也衷心建议您找一本好书(Agile Web Development with Rails)或教程(Ruby on Rails 教程)。

于 2012-06-15T14:17:04.420 回答