以rails形式从逗号分隔的条目创建多个记录

时间:2014-01-24 19:00:57

标签: ruby-on-rails

我看过这两个SO讨论,但它不适合我

1)Creating multiple records at once from comma seperated IDs

2)How to accept comma-delimited list to build tags for model?

我正在尝试从表单中获取单个字符串,并创建多个以逗号分隔的活动记录条目

形式:

<%= form_for @tag, html: {:class => "form-horizontal" } do |f| %>               
            <fieldset>
              <div class="form-group">
                <%= f.label :tagname, "Tag Name", :class => "col-lg-3 control-label" %>     
                <%= f.text_field :tagname, :class => "form-control" %>                       
              </div>      

              <div class="form-group">                      
                  <%= f.submit class: 'btn btn-primary' %>
              </div>
                  <%= link_to 'Back', tags_path %> |
                  <%= link_to 'Home', :userroot %>   
            </fieldset>
<% end %>

控制器:

def create
@tag = params[:tagname].split(/,\s*/)
@tag.each do |t|
  newtag = Tag.new(:tagname => t)
  newtag.save
end
redirect_to tags_path
end

错误:

NoMethodError in TagsController#create 

undefined method `split' for nil:NilClass

Request 
Parameters:
{"utf8"=>"✓",
 "authenticity_token"=>"RwjDJ9WQD6nJ51AymbSBubcmDbzDNTYWot0nP1FPV04=",
 "tag"=>{"tagname"=>"a new tag, two tag, three tag"},
 "commit"=>"Create Tag"}

1 个答案:

答案 0 :(得分:4)

你检查了你的参数吗?您的逗号分隔字符串可能位于

params[:tag][:tagname]

请务必检查字符串是否为空,否则您无法期待用户的完美行为。

GL&amp; HF。