【问题标题】:Rails insert each line from a text_area in DBRails 从 DB 中的 text_area 插入每一行
【发布时间】:2013-10-02 13:40:07
【问题描述】:

在我的 rails 应用程序中,我有一个 text_field,它在按下按钮后将字符串值插入到数据库中。但是我想用 text_area 替换那个 text_field 并将每一行作为新记录插入到我的数据库中。我正在使用 simple_form。

_form
<%= simple_form_for @keyword do |f|%>
<%=f.input :name%>
<%=f.button :submit%>
<%end%>

controller
@keyword = Keyword.new(keyword_params)
 if @keyword.save
 redirect_to :back
end

我几乎知道我必须做什么,但是我必须在哪里将列表解析到控制器或模型中?

谢谢。

【问题讨论】:

  • 请出示您的代码

标签: ruby-on-rails database forms


【解决方案1】:

换行符由字符串上的\n 表示。知道这一点后,您可以在控制器上获取 text_area 参数,例如 params[:text_area] 并使用 String#split 方法将此字符串转换为基于换行数的 n 个位置的数组。

string_array = params[:text_area].split("\n")
# do your stuff with the array of strings

【讨论】:

  • 是的,就是这样。或者也许将它们设置在变量中,如value = string_array[0]value = string_array[1] 等。但这样你必须知道你将始终拥有多少个字符串。
  • 在我的创建方法中,我如何获取参数,我添加了您的代码,我收到拆分方法未知的错误消息,因为我没有得到任何参数。我所做的是添加您的行,然后执行每个循环并从文本字段中获取每一行并将其添加到变量中并保存。
  • 好吧,您必须将:text_area 更改为表单上的实际值。
  • 我做到了:)) 我添加了一个记录器来查看我是否从参数中得到了一些东西,我做到了。但是当我添加 split 方法时,它给了我这个错误。拆分方法未定义
【解决方案2】:

为了解决这个问题,我这样做了:

 keyword_array = keyword_params[:name].split("\r\n")

 def keyword_params
    params.require(:keyword).permit(:name)
 end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 2016-07-22
    • 2017-06-05
    • 1970-01-01
    • 2011-04-12
    • 2022-11-16
    • 1970-01-01
    相关资源
    最近更新 更多