Jquery Rails-嵌套表单-随机化用户发布的所有单个字段
用户可以通过post创建,通过单击“添加文本”按钮[new.html.erb],动态添加任意数量的嵌套文本字段 例如,如果用户创建包含三个文本字段的帖子 (Text1 text2text3) 然后是另一篇包含三个文本字段的文章 (TextA TextB TextC) 这将在浏览器[index.html.erb]中显示为:或由于.order(“RANDOM()”[索引操作] 但是,我试图输出用户发布的所有文本字段的随机列表。例如,我想整体输出和随机化(Text1 text2text3textatextbtextc)。换句话说,我的目标是分别输出所有文本字段的随机组合(TextA Text2 TextC Text1 text3textb) 我无法通过我的索引操作和index.html.erbJquery Rails-嵌套表单-随机化用户发布的所有单个字段,jquery,ruby-on-rails,ruby,sqlite,ruby-on-rails-4,Jquery,Ruby On Rails,Ruby,Sqlite,Ruby On Rails 4,用户可以通过post创建,通过单击“添加文本”按钮[new.html.erb],动态添加任意数量的嵌套文本字段 例如,如果用户创建包含三个文本字段的帖子 (Text1 text2text3) 然后是另一篇包含三个文本字段的文章 (TextA TextB TextC) 这将在浏览器[index.html.erb]中显示为:或由于.order(“RANDOM()”[索引操作] 但是,我试图输出用户发布的所有文本字段的随机列表。例如,我想整体输出和随机化(Text1 text2text3texta
<@posts.each do |post| %>
<% post.things.each do |thing| %>
<%= thing.try(:text) %>
<% end %>
<% end %>
任何帮助都将是惊人的!谢谢大家!
new.html.erb
<button id='addtext'>text</button>
<%= form_for @post, html: { multipart: true } do |f| %>
<%= f.fields_for :things do |ff| %>
<% end %>
<%= f.submit %>
<% end %>
class PostsController < ApplicationController
def index
@posts = Post.includes(:things).all.order("RANDOM()")
end
end
ActiveRecord::Schema.define(version: 20160227154831) do
create_table "posts", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "taggings", force: :cascade do |t|
t.integer "tag_id"
t.integer "taggable_id"
t.string "taggable_type"
t.integer "tagger_id"
t.string "tagger_type"
t.string "context", limit: 128
t.datetime "created_at"
end
add_index "taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true
add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context"
create_table "tags", force: :cascade do |t|
t.string "name"
t.integer "taggings_count", default: 0
end
add_index "tags", ["name"], name: "index_tags_on_name", unique: true
create_table "things", force: :cascade do |t|
t.text "text"
t.integer "post_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "order"
end
end
你试过这个吗
class PostsController < ApplicationController
def index
@posts = Post.includes(:things).find(:all, :order =>"RANDOM()", :limit => 10)
end
end
class PostsController“RANDOM()”,:limit=>10)
结束
结束
MySQL也使用RAND()而不是RANDOM() 您可以尝试以下内容posts\u controller.rb
class PostsController < ApplicationController
def index
@things = Thing.all
end
end
class PostsController
在index.html.erb中
<% @things.shuffle.each do |thing| %>
<%= thing.try(:text) %>
<% end %>
不确定我是否理解正确,但如果您希望当前用户的所有内容都随机排序,这将起作用:
class PostsController < ApplicationController
def index
@things = Thing.joins(post: :user).where(users: { id: current_user.id }).order("RANDOM()")
end
end
class PostsController
在DB中进行洗牌(=随机排序)也比在ruby中进行洗牌更可取,因为它速度更快
编辑:更优雅地说,您可以添加一个has_many:through关系,通过执行current_user.things直接访问当前用户的内容。然而,我把这个练习留给你…;-) 嗨-谢谢你的帮助!不幸的是,这导致了这个错误:“找不到所有具有'id'的帖子:(all,{:order=>“RANDOM()”,:limit=>10})(找到0个结果,但正在查找2)“嗯。如果您在SQLite或MySQL上,是否尝试使用RAND()而不是RANDOM?”。也可以按偏移量使用它。请参阅目前正在使用SQLite-仍然不走运-感谢您的链接!嗨-这不起作用:(-谢谢你的反馈!