Ruby on rails 如何订购由以下地址创建的habtm协会的集合:
我有三个主要的类:用户、词汇和标签。用户有许多标签。标签拥有并属于许多歌手,反之亦然。 当通过Vocab对象获取标记时,如何对标记集合进行排序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.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还想知道为什么它没有显示任何订单语句的符号。。。你的命令看起来不错,它给我的标签顺序正确。我会尝试在控制器中使用它。