Создайте новую запись из link_to результатов в urlgenerationerror

Я пытаюсь создать запись в таблице, когда пользователь нажимает на ссылку.

Однако при попытке загрузить представление возникает следующая ошибка:

ActionController::UrlGenerationError in SopHeaders#show

No route matches {:action=>"create", :company_id=>2, :controller=>"sop_detail", :cost=>0.1e2, :cost_sop=>0.103e2, :customer_id=>1, :desc1=>"Printer cable YDP30 - Secura 224 ICEU", :flag_required=>true, :id=>"4", :list_price=>0.0, :opportunity_id=>"9", :product_code=>"01-69Y03293", :quantity=>1, :sophead_id=>4, :unit_price=>0.0}

My view

<%= link_to 'Add to Quote', {:controller => "sop_details", 
                       :action => "create", 
                       :sophead_id => @sop_header.id,
                       :customer_id => @customer.id,
                       :company_id => @customer.company_id, 
                       :product_code => stock.product_code, 
                       :unit_price => stock.price, 
                       :quantity => 1,
                       :cost => stock.cost, 
                       :cost_sop => stock.cost_sop, 
                       :list_price => stock.list_price, 
                       :flag_required => true, 
                       :desc1 => stock.desc1},
                       :method => "post" %>

My Controller

  def new
    @sop_detail = SopDetail.new
  end


def create
    respond_to do |format|
      if @sop_detail.save
        format.html { redirect_to customer_opportunity_sop_header_path(@customer, @opportunity, @sop_header) }
        format.json { render :show, status: :created, location: @sop_header }
      else
        format.html { render :new }
        format.json { render json: @sop_header.errors, status: :unprocessable_entity }
      end
    end
end

Мой вывод таблицы маршрута

    customer_opportunity_sop_header_sop_details GET    /customers/:customer_id/opportunities/:opportunity_id/sop_headers/:sop_header_id/sop_details(.:format)          sop_details#index
                                                POST   /customers/:customer_id/opportunities/:opportunity_id/sop_headers/:sop_header_id/sop_details(.:format)          sop_details#create
 new_customer_opportunity_sop_header_sop_detail GET    /customers/:customer_id/opportunities/:opportunity_id/sop_headers/:sop_header_id/sop_details/new(.:format)      sop_details#new
edit_customer_opportunity_sop_header_sop_detail GET    /customers/:customer_id/opportunities/:opportunity_id/sop_headers/:sop_header_id/sop_details/:id/edit(.:format) sop_details#edit
     customer_opportunity_sop_header_sop_detail GET    /customers/:customer_id/opportunities/:opportunity_id/sop_headers/:sop_header_id/sop_details/:id(.:format)      sop_details#show
                                                PATCH  /customers/:customer_id/opportunities/:opportunity_id/sop_headers/:sop_header_id/sop_details/:id(.:format)      sop_details#update
                                                PUT    /customers/:customer_id/opportunities/:opportunity_id/sop_headers/:sop_header_id/sop_details/:id(.:format)      sop_details#update

Что я делаю неправильно?

0
задан 13 August 2018 в 14:25

1 ответ

Ваш путь redirect_to не указан в ваших маршрутах. Вы хотите перейти на путь customer_opportunity_sop_header_path, пока это не на ваших маршрутах. Я думаю, вы хотите перейти к customer_opportunity_sop_header_sop_details_path.

0
ответ дан 15 August 2018 в 17:03
  • 1
    Привет, Стеф, извините, что путь в моих маршрутах, я только скопировал и вставил элементы относительно уровня детализации. Я попытался изменить перенаправление на другой путь, и у меня все еще есть такая же проблема. – Chris Nash 13 August 2018 в 16:46
  • 2
    Теперь, когда я выгляжу немного ближе к вашему коду, я вижу, что вы хотите сделать запрос POST из ссылки. Это не стандартно и обычно выполняется с помощью html-формы и скрытых полей ввода (я также рекомендую это). Другой вариант - использовать rails-ujs ( guide.rubyonrails.org/working_with_javascript_in_rails.html ). – Stef 14 August 2018 в 17:19

Другие вопросы по тегам:

Похожие вопросы: