ruby-on-rails – 如何在Rails中使用两个带有一个模型的控制器
我有一个订单模型.客户通过Orders控制器与Order模型进行交互.管理员通过“购买”控制器与订单模型进行交互.
它大部分都在工作,除非发生这种情况: >管理员用户转到new_purchase_path 我真正需要做的是: >管理员用户转到new_purchase_path 在app / controllers / purchases_controller.rb我有这个: def new @purchase = Order.new respond_with @purchase end 如果尝试过像……那样的变化 def new @purchase = Order.new respond_with @purchase,:controller => :purchases end …但是没有记录为respond_with,并且自然它不起作用.我能做什么? 解决方法
这个问题的答案与你的
last question有关.我已经更新了
my answer there,但简而言之,问题不在于respond_with(正如@ jiri-pospisil指出的那样你并不真正需要),而是你的表格由simple_form_for.该表单中的操作URL默认为/ orders,因为@purchase是Order类的实例.
要解决该问题,请在表单中指定网址: = simple_form_for @purchase,:as => :purchase,:url => purchases_path(@purchase) do |f| = f.error_notification = f.input :name = f.button :submit 然后,您会发现还有另一个问题:创建新订单(购买)后,respond_with将重定向到OrdersController的show动作.要解决此问题,您可以使用location选项: def create @purchase = Order.new(params[:purchase]) if @purchase.save respond_with(@purchase,:location => purchases_path(@purchase)) ... 正如您可能在这一点上所说的那样,对于单个模型使用两个控制器会变得有些复杂,因此您可能需要考虑使用namespaces. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |