ruby-on-rails - 为模型关联创建 form_for

标签 ruby-on-rails associations form-for

我有两个模型:

品牌

has_many :products

产品

belongs_to :brand

在我看来 (show_brand.html.erb),我使用 @brand.name ... 显示有关品牌的所有信息。

我想为属于品牌产品创建表单,我正在显示相关信息。

类似于:

form_for(@brand.products) ...
  1. 我该如何执行?
  2. 如何将 user_id 附加到 product 表单(product belongs_to user ) 而无需手动将其添加到 Controller 中

注意: 关于我列表中的第一项,我知道可以通过将路由升级为嵌套并传递带有主对象和关联对象的数组来完成。但如果有另一种方法呢?不修改 routes.rb 和 ...

最佳答案

您可以使用accepts_nested_attributes_for

#brand_controller.rb

def new
  @brand = Brand.new
  @product = @brand.products.build
end

def create
  @brand = Brand.new(brand_params)
  if @brand.save
    .....
  else
   .....
  end
end

private

def brand_params
  params.require(:brand).permit(:id, brand_attribute_1, brand_attribute_2, products_attributes: [:id, :product_attribute_1, :user_id, :product_attribute_2])
end

在你的表单中

<%= form_for @brand do |f| %>

----code for brand attributes ---

  <%= f.fields_for @product do |p| %>
  ----code for product attributes----  
  <%= p.hidden_field user_id, :value => current_user.id %> #to attach user_id to product
  <% end %>

<%= f.submit "Submit" %>
<% end %>

关于ruby-on-rails - 为模型关联创建 form_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30880285/

相关文章:

ruby-on-rails - 如何构建可在运行时编辑的 Rails 站点?

html - 从 html(.erb) 在 sass/css 中动态设置 div 颜色

ruby-on-rails-4 - 通过 has_many 关联的 rails 范围

ruby-on-rails - form_for 选择字段中的占位符?

ruby-on-rails-3 - 如何设置form_for select的默认值

ruby-on-rails - 如何在 rails 中有两个不同的注册页面(使用设计)

sql - 没有 UNION 的库存 SQL 查询?

ruby-on-rails - Rails 3 有 find_by 关联魔法吗?

ruby-on-rails - 如何在 Rails 中的对象上构建子关联而不保存父对象?

ruby-on-rails - 更改 form_for 中标签上的文本