0

私はレールの初心者です。

私のフォームでは、「123、xxx_new item、132、xxx_test」のような文字列を取得します

アイテムが「xxx_」で始まる場合は、そのアイテムをデータベースに追加する必要があることを意味します。それ以外の場合は値を入力してください

これは私のコードであり、このコードを書くためのより良い方法があると確信しています

tags = params[:station][:tag_ids].split(",")
    params[:station][:tag_ids] = []   
    tags.each do |tag|
      if tag[0,4]  =="xxx_" 

        params[:station][:tag_ids] << Tag.create(:name => tag.gsub('xxx_', '')).id

      else 

        params[:station][:tag_ids]<< tag   

      end
    end

コードの構文を改善する方法を探しています

4

1 に答える 1

0

どうですか:

tags = params[:station][:tag_ids].split(',')
params[:station][:tag_ids] = tags.each_with_object([]) do |tag, array|
  array << tag.start_with?('xxx_') ? Tag.create(name: tag[4..-1]).id : tag
end
于 2013-08-17T20:12:14.690 に答える