在Rails中使用fields_for
对嵌套字段进行排序的方法如下:
fields_for
方法来渲染嵌套字段。例如,如果你有一个Post
模型,其中包含多个Comment
模型,你可以这样写:<%= form_for @post do |f| %>
<%= f.text_field :title %>
<%= f.fields_for :comments, @post.comments.order(:created_at) do |comment_fields| %>
<%= comment_fields.text_field :content %>
<% end %>
<%= f.submit %>
<% end %>
上述代码中,@post.comments.order(:created_at)
用于对comments
关联的记录按照created_at
字段进行排序。
strong_params
方法中允许嵌套字段的排序参数。例如,如果你的Post
模型有一个comments_attributes
参数,你可以这样写:def post_params
params.require(:post).permit(:title, comments_attributes: [:id, :content, :_destroy, :position])
end
上述代码中,position
字段用于保存嵌套字段的排序位置。
accepts_nested_attributes_for
方法来接受嵌套字段的排序参数。例如,在Post
模型中,你可以这样写:class Post < ApplicationRecord
has_many :comments
accepts_nested_attributes_for :comments, allow_destroy: true
end
上述代码中,accepts_nested_attributes_for
方法允许Post
模型接受comments_attributes
参数,并且允许删除嵌套字段。
这样,当你提交表单时,Rails会自动按照created_at
字段的顺序对嵌套字段进行排序,并将排序后的结果保存到数据库中。