我正在尝试使用 link_to 辅助函数为特定产品创建新订单。这是我的:
产品型号
class Product < ActiveRecord::Base
has_many :orders
end
路线.rb
resources :products, :only => [:show, :new, :create, :index, :update, :destroy] do
resources :orders, :only => [:create]
end
产品 View /show.html.erb
<%= link_to 'New Order', new_product_orders_path(@product) %>
订单 Controller
class OrdersController < ApplicationController
def create
@order = Order.new
end
end
相关佣金路线:
product_orders POST /products/:product_id/orders(.:format) orders#create
但是当我这样做时,我得到了未定义的方法“new_product_orders_path”
在 Rails 4 中执行此操作的正确方法是什么?
最佳答案
在你的 route 添加new
action here
resources :orders, :only => [:create, :new]
您的 Controller 也缺少new
操作,在您的create
操作中您需要保存您的记录
class OrdersController < ApplicationController
before_filter :set_product
def new
@order = @product.orders.new
end
def create
@order = @product.orders.new(params[:order])
@order.save
end
private
def set_product
@product = Product.where("id =?", params[:product_id]).first
end
end
关于ruby-on-rails - 为嵌套资源创建新的 link_to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23847917/