如何在Ruby中拆分字符串变量

use*_*140 -5 ruby ruby-on-rails

我有这个迷你功能:

def dummy_string_management(val)
    parts = val.split(' ')
    return "#{parts[0]}" + " -done!"
end
Run Code Online (Sandbox Code Playgroud)

我正在调用这样的函数:

myString = "This is a string"
<%= dummy_string_management(myString) %>
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

undefined method `split' for This is a string
Run Code Online (Sandbox Code Playgroud)

如何拆分作为函数参数发送的变量?

the*_*Man 6

使用IRB测试代码:

>> def dummy_string_management(val)
|        parts = val.split(' ')
|        return "#{parts[0]}" + " -done!"
|    end
:dummy_string_management
>> dummy_string_management('foo bar')
"foo -done!"
Run Code Online (Sandbox Code Playgroud)

所以,代码表现正常.(这不是很好的Ruby,但这是一个不同的问题.)

你不能使用

myString = "This is a string"
<%= dummy_string_management(myString) %>
Run Code Online (Sandbox Code Playgroud)

在视图/ ERB模板中.该行myString = "This is a string"不会按您的预期解释,也不会得到您说的错误消息.您至少需要在内部定义变量,<% ... %>但实际上应该在控制器中定义变量,并且应该将结果dummy_string_management(myString)分配给在视图中直接访问的变量.

就像我们如何编写你的方法一样:

def dummy_string_management(val)
    val.split.first + ' -done!'
end
Run Code Online (Sandbox Code Playgroud)

如何运作留给你弄清楚.

  • **什么?!?!在您的问题中发布您实际使用的信息!** (2认同)