Хобрук: Ваш путь к мастерству в программировании

rails - передать параметр id на link_to/routing

Я пытаюсь добавить ссылку для оформления заказа, чтобы направить клиента в режим оформления заказа. У меня есть ProductsController и OrdersController, где я определил действие для оформления заказа. Я делаю это, потому что настроил так, чтобы у продукта было много заказов.


class OrdersController < ApplicationController

  def checkout
    @product =  Product.find(params[:id])
  end

В моем show.html.erb я добавил строку:

<%= link_to 'Contribute Now', order_checkout_path, :id => @product, :controller => "orders", :method => :get %> 

И мои маршруты выглядят так:

root :to => 'products#index'
match '/products'               => 'products#index'
get 'order/checkout'

resources :products
resources :orders

После запуска рейк-маршрутов я получаю:

           root        /                                   products#index
       products        /products(.:format)                 products#index
 order_checkout GET    /order/checkout(.:format)           order#checkout
                GET    /products(.:format)                 products#index
                POST   /products(.:format)                 products#create
    new_product GET    /products/new(.:format)             products#new
   edit_product GET    /products/:id/edit(.:format)        products#edit
        product GET    /products/:id(.:format)             products#show
                PUT    /products/:id(.:format)             products#update
                DELETE /products/:id(.:format)             products#destroy

Я также определил шаблон checkout.html.erb.

После всего этого я продолжаю получать ошибку:

Routing Error
uninitialized constant OrderController
Try running rake routes for more information on available routes.

Что мне не хватает?


Ответы:


1

Вы хотите get 'orders/checkout', что соответствует форме множественного числа «порядка», используемой в имени вашего контроллера.

31.12.2013
  • Да! Меня всегда раздражает множественное число. Если я изменю маршруты на ваше предложение, а затем строку ‹%= link_to 'Checkout', orders_checkout_path, :id =› @product, :controller =› orders, :method =› :get %› , то я получаю другую ошибку : Не удалось найти продукт без идентификатора 01.01.2014
  • Я заметил, что вы не проголосовали и не приняли ответы на свой предыдущий вопрос., поэтому позвольте мне предложить вам сделать это для обоих вопросов, если вы нашли ответы полезными. Среди прочего, это удерживает других от того, чтобы тратить время на изучение уже заданного вопроса. 01.01.2014
  • Привет Питер. Мне очень жаль, у меня недостаточно репутации, чтобы голосовать за ответы. Я также не видел продолжения к предыдущему вопросу. Я не был уверен ни в том, как работает Accept. Большое спасибо за отзыв, это очень ценно. 01.01.2014
  • Не беспокойтесь (и я все время забываю о требовании количества голосов). Я не уверен, что вы имеете в виду под следом, но я вижу, что вы нашли и приняли ответ на предыдущий вопрос. :-) 01.01.2014
  • Еще раз спасибо, Питер :)!(И с Новым годом!) Вернуться к задаче Не удалось найти продукт без идентификатора ;) 01.01.2014
  • Новые материалы

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...