Rails: как перенаправить в действии контроллера с формой вложенных атрибутов - PullRequest
1 голос
/ 23 января 2020

Я пытаюсь перенаправить после отправки вложенной формы.

У меня есть два ресурса: 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

Как мне это реализовать?

Заранее спасибо!

1 Ответ

1 голос
/ 24 января 2020

Согласно моему последнему комментарию на ваш вопрос, вам нужно найти только что созданный вариант продукта, используя значения ha sh, которые делают запись ProductVariant уникальной

@product_variant = ProductVariant.find_by(whatever params make this record unique)

, а затем

redirect_to @product_variant
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...