2014-01-24 2 views
1

Я смотрел на эти два 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"} 
+2

Вы проверили свои параметры? Строка с разделителями запятой, вероятно, находится под 'params [: tag] [: tagname]' – rlecaro2

+0

, я знал, что это должно быть что-то простое ... спасибо. пожалуйста, напишите как ответ, чтобы я мог дать вам кредит –

ответ

4

Вы проверили свои Params? Ваша запятую строка, вероятно, под

params[:tag][:tagname] 

Не забудьте проверить, если строка пуста в любом случае, вы не можете ожидать идеального поведения от пользователя.

GL & HF.

Смежные вопросы