Rails 4 - 操作表单输入并在视图中显示

时间:2015-11-14 23:13:50

标签: ruby-on-rails regex ruby-on-rails-4

我有一个页面,我从表单中获取输入,然后在视图中显示它。

查看:

<%= form_tag("/page", method:"get") do %>
<%= text_area_tag(:x, @input)%>
<%= submit_tag("Submit Form") %> <%end%> 
<%=@input%>

控制器:

def myMethod
if params[:x].present?
    @input = "#{params[:x]}"
end

这很好但是我希望能够识别字符串中有空格的位置,然后用新行替换空格,并添加&#34;,&#34;。例如,如果用户输入“猫狗鼠标”,我希望视图返回:

 'cat', 
 'dog',
 'mouse',

有一种简单的方法可以使用ruby函数执行此操作,还是需要编写正则表达式文本搜索?

由于

2 个答案:

答案 0 :(得分:1)

一个简单的gsub会:

"cat dog mouse".gsub(" ", ",\n")

这将使用逗号/换行符替换空格,的每个匹配项。

<强>更新

由于您希望使用单引号封装每一行,因此一种简单的方法是:

"cat dog mouse".split               # Split the string into an array (automatically splits by space)
               .map{|w| "'#{w}'"}}  # Reassemble it with single quotes added
               .join(",\n")         # Convert the array into a string again and insert the comma/newline characters between each entry

当然,这些代码都可以写在一行上。

以下是另一种快速方法:

string = "cat dog mouse"
new_string = "'" + string.split.join("',\n'") + "'"  # Outputs the same as above. Less friendly to read, but is also shorter.

答案 1 :(得分:1)

您可以使用拆分,地图和联接:

"cat dog mouse".split(" ").map {|a| "'#{a}',\n"}.join

拆分会创建列表["cat", "dog", "mouse"]

地图会将其转换为["'cat',\n", "'dog',\n", "'mouse',\n"]

加入再次创建字符串"'cat',\n'dog',\n'mouse',\n"