Rails:如何使用嵌套属性形式在控制器操作中重定向

Rails: how to redirect in controller action with nested attributes form

我正在尝试在提交嵌套表单后重定向。

我有两个资源:productsproductvariants,其中 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