Rails:如何使用嵌套属性形式在控制器操作中重定向
Rails: how to redirect in controller action with nested attributes form
我正在尝试在提交嵌套表单后重定向。
我有两个资源:products
和 productvariants
,其中 product
has_many productvariants
。在我的 ProductsController.rb
上,我有一个 add_sku
操作:
class Admin::ProductsController < ApplicationController
def add_sku
@product = Product.find(params[:id])
@product.productvariants.build
@page_title = 'Create new productvariant'
end
和相对形式:
<%= form_for [:admin, @product], :html => {'role' => 'form' } do |f| %>
<%= f.fields_for :productvariants, Productvariant.new do |ff| %>
<div">
<%= ff.label :hero_id %>
<%= ff.select(:hero_id, Image.joins(:albums => :section).where(:sections => {:title => 'shop'}).order('file_name asc').map{|s| [s.file_name, s.id]}, {}, {}) %>
</div>
<div>
<%= ff.label "Variant title" %>
<%= ff.text_field :title %>
</div>
<div>
<%= ff.label :price %>
<%= ff.text_field :price %>
</div>
<div>
<%= ff.label :stock %>
<%= ff.text_field :stock %>
</div>
<% end %>
<div class="actions create">
<%= f.submit "Save" %>
</div>
<% end %>
我想了解如何在点击提交后重定向到 productvariants
的显示页面。类似于此:
class Admin::ProductsController < ApplicationController
def add_sku
@product = Product.find(params[:id])
@product.productvariants.build
@page_title = 'Create new productvariant'
? if @product.productvariants.save
? flash[:notice] = "The productvariant has been successfully added to the product."
? redirect_to :controller => :productvariants, :action => :show, :id => @productvariant
? else
? render :action => :add_sku
? end
end
我该如何实现?
提前致谢!
根据我对你问题的最后评论,你需要找到刚刚使用使 ProductVariant 记录唯一的参数哈希值创建的产品变体
@product_variant = ProductVariant.find_by(whatever params make this record unique)
然后
redirect_to @product_variant
我正在尝试在提交嵌套表单后重定向。
我有两个资源:products
和 productvariants
,其中 product
has_many productvariants
。在我的 ProductsController.rb
上,我有一个 add_sku
操作:
class Admin::ProductsController < ApplicationController
def add_sku
@product = Product.find(params[:id])
@product.productvariants.build
@page_title = 'Create new productvariant'
end
和相对形式:
<%= form_for [:admin, @product], :html => {'role' => 'form' } do |f| %>
<%= f.fields_for :productvariants, Productvariant.new do |ff| %>
<div">
<%= ff.label :hero_id %>
<%= ff.select(:hero_id, Image.joins(:albums => :section).where(:sections => {:title => 'shop'}).order('file_name asc').map{|s| [s.file_name, s.id]}, {}, {}) %>
</div>
<div>
<%= ff.label "Variant title" %>
<%= ff.text_field :title %>
</div>
<div>
<%= ff.label :price %>
<%= ff.text_field :price %>
</div>
<div>
<%= ff.label :stock %>
<%= ff.text_field :stock %>
</div>
<% end %>
<div class="actions create">
<%= f.submit "Save" %>
</div>
<% end %>
我想了解如何在点击提交后重定向到 productvariants
的显示页面。类似于此:
class Admin::ProductsController < ApplicationController
def add_sku
@product = Product.find(params[:id])
@product.productvariants.build
@page_title = 'Create new productvariant'
? if @product.productvariants.save
? flash[:notice] = "The productvariant has been successfully added to the product."
? redirect_to :controller => :productvariants, :action => :show, :id => @productvariant
? else
? render :action => :add_sku
? end
end
我该如何实现?
提前致谢!
根据我对你问题的最后评论,你需要找到刚刚使用使 ProductVariant 记录唯一的参数哈希值创建的产品变体
@product_variant = ProductVariant.find_by(whatever params make this record unique)
然后
redirect_to @product_variant