Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何订购由以下地址创建的habtm协会的集合:_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何订购由以下地址创建的habtm协会的集合:

Ruby on rails 如何订购由以下地址创建的habtm协会的集合:,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有三个主要的类:用户、词汇和标签。用户有许多标签。标签拥有并属于许多歌手,反之亦然。 当通过Vocab对象获取标记时,如何对标记集合进行排序 @vocab.tag 从联接表中获取标记,该表在列中没有创建。 有没有简便的方法来解决这个问题 我是Rails的新手,如果这是显而易见的,请原谅 编辑:我刚试过 @tags = @vocab.tags.order('tags.created_at DESC') 但是没有成功 电脑显示: Started GET "/users/1/vocabs/61"

我有三个主要的类:用户、词汇和标签。用户有许多标签。标签拥有并属于许多歌手,反之亦然。 当通过Vocab对象获取标记时,如何对标记集合进行排序

@vocab.tag
从联接表中获取标记,该表在列中没有创建。 有没有简便的方法来解决这个问题

我是Rails的新手,如果这是显而易见的,请原谅

编辑:我刚试过

@tags = @vocab.tags.order('tags.created_at DESC')
但是没有成功

电脑显示:

Started GET "/users/1/vocabs/61" for 127.0.0.1 at 2014-12-11 15:41:15 +0100
Processing by VocabsController#show as HTML
Parameters: {"user_id"=>"1", "id"=>"61"}
User Load (0.3ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = 1 LIMIT 1
Vocab Load (0.3ms)  SELECT  "vocabs".* FROM "vocabs"  WHERE "vocabs"."user_id" = ? AND "vocabs"."id"      
                    = ?  ORDER BY created_at DESC LIMIT 1  [["user_id", 1], ["id", 61]]
Tag Load (0.5ms)  SELECT DISTINCT "tags".* FROM "tags" INNER JOIN "tags_vocabs" ON "tags"."id" = 
                  "tags_vocabs"."tag_id" WHERE "tags_vocabs"."vocab_id" = ?  [["vocab_id", 61]]
Rendered shared/_error_messages.html.erb (0.2ms)
Rendered vocabs/show.html.erb within layouts/application (10.7ms)
Rendered layouts/_shim.html.erb (0.1ms)
Rendered layouts/_header.html.erb (1.1ms)
Completed 200 OK in 602ms (Views: 587.3ms | ActiveRecord: 1.2ms)
控制器操作如下所示:

def new_tag
  @user = current_user
  @vocab = @user.vocabs.find(params[:id])
  @tags = @vocab.tags.order('tags.created_at DESC')
  @tag = current_user.tags.build(name: params[:tag])

  if @tag.save
    @vocab.tags<<@tag
    flash.now[:success] ='Tag successfully created.'
    redirect_to user_vocab_path(@user, @vocab)
  else
    flash.now[:danger] = "Tag could not be created!"
    render :action => "show"
  end
end

你说标签没有被创建。不改为试试vocabs.created_at。这样会不会按照标签所属vocab的created_at值对标签进行排序?我希望它们按照标签表中创建的值进行排序。我在问题中添加了服务器回复。奇怪。没有订单?尝试在Rails控制台中执行以下命令,它会生成什么SQL?Vocab.first.tags.ordercreated_at::descI还想知道为什么它没有显示任何订单语句的符号。。。你的命令看起来不错,它给我的标签顺序正确。我会尝试在控制器中使用它。