在没有关联对象的情况下,将多个对象接受为simple_form中的数组,可以通过使用Rails的Nested Attributes来实现。
Nested Attributes允许在一个表单中同时处理多个关联对象,而无需在控制器中手动处理。在simple_form中,可以通过使用fields_for
方法来实现Nested Attributes。
以下是实现的步骤:
User
模型和一个Post
模型,你可以在User
模型中设置has_many :posts
,在Post
模型中设置belongs_to :user
。fields_for
:在simple_form的表单中,使用fields_for
方法来处理关联对象。在这个例子中,你可以在User
表单中使用fields_for :posts
来处理Post
对象。
<%= simple_form_for @user do |f| %>
<%= f.input :name %>
<%= f.fields_for :posts do |p| %>
<%= p.input :title %>
<%= p.input :content %>
<% end %>
<%= f.button :submit %>
<% end %>
User
控制器的user_params
方法中使用posts_attributes
来允许接受Post
对象的参数。
def user_params
params.require(:user).permit(:name, posts_attributes: [:title, :content])
end
User
模型中,使用accepts_nested_attributes_for
方法来接受嵌套属性。在这个例子中,你可以在User
模型中添加accepts_nested_attributes_for :posts
。
class User < ApplicationRecord
has_many :posts
accepts_nested_attributes_for :posts
end
这样,当你提交表单时,simple_form会自动处理关联对象的创建和更新。你可以在控制器中使用@user.save
来保存用户和关联的帖子。
这是一个简单的例子,你可以根据你的实际需求进行调整。关于simple_form的更多信息和用法,请参考腾讯云的相关文档和示例代码。
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云