【问题标题】:ruby object expected, got String预期红宝石对象,得到字符串
【发布时间】:2014-07-22 02:25:48
【问题描述】:

我正在尝试创建带有关联标签的歌曲,但我的创建方法抛出错误:

Tag(#70267554396440) expected, got String(#70267493763880)

我的歌曲#create:

def create
 tags = params[:song][:tag_list].split(", ")
 @song = current_user.songs.create(song_params)
 tags.each do |tag| 
   if Tag.find_by(:name => tag)
       @song.tags << tag
   else 
     @song.tags.create(:name => tag)
   end
 end
 flash[:success] = "You have successfully created a new track!"
 redirect_to @song
end

我该怎么办?问题似乎在于向歌曲添加现有标签。

【问题讨论】:

    标签: ruby-on-rails ruby string object tags


    【解决方案1】:

    您还可以使用 find_or_create_by 方法简化您的代码:

    @song.tags << Tag.find_or_create_by(:name => tag.name)
    

    查看this link 获取一些文档。

    【讨论】:

      【解决方案2】:

      我们需要找到标签,然后将它设置在一个变量中调用它。

      tags.each do |tag_name| 
        if t = Tag.find_by(:name => tag_name)
          @song.tags << t
        else 
          @song.tags.create(:name => tag_name)
        end
      end
      

      【讨论】:

        猜你喜欢
        • 2010-11-29
        • 1970-01-01
        • 2014-02-11
        • 2011-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-25
        • 1970-01-01
        相关资源
        最近更新 更多