【发布时间】:2013-05-24 02:46:02
【问题描述】:
我正在开发一个购物车应用程序并且有一个订单模型。我在订单模型中添加了运输详细信息,包括carrier、tracking_number 和ship_date。我创建了一个名为updateshipping 的方法,以便在更新订单后进行不同的重定向。
我是 rails 新手,所以不确定保存后是否可以在 rails 中进行条件重定向,或者我是否应该创建自定义路由来访问 updateshipping 方法(我尝试过),或者正确答案是否为我应该创建一个新模型来保存运输详细信息。
我尝试通过updateshipping 方法将表单部分重定向到更新,但提交按钮不起作用。当我将鼠标悬停在提交按钮上时,网址不会出现。当我点击 Submit 时,它似乎重新加载了部分表单。如果我在form_for 中删除@order 之后的所有内容,它会正确转到更新订单/更新方法,所以我假设我的问题在form_for 行上(或者这首先是订单模型的一部分。 )
<%= form_for(@order, :url => shipment_path, :html => { :method => "put" }) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :carrier %>
<%= f.text_field :carrier %>
<%= f.label :tracking_number, "Tracking #" %>
<%= f.text_field :tracking_number %>
<div class="form-actions">
<%= f.submit "Save changes", class: "btn btn-warning" %>
</div>
<% end %>
订单控制器
def updateshipping
raise params.inspect (code to update the order will come later)
end
耙子路线
shipment /shipmentdetails/:id(.:format) orders#shipment_details
shipment PUT /shipmentdetails/:id(.:format) orders#updateshipping
routes.rb
match '/shipmentdetails/:id' => 'orders#shipment_details', :as => :shipment
match '/shipmentdetails/:id' => 'orders#updateshipping', :as => :shipment, via: :put
订单模型
class Order < ActiveRecord::Base
attr_accessible :name, :address, :carrier, :tracking_number, :ship_date
has_many :line_items, dependent: :destroy
has_one :user
has_one :shop
validates :name, :address, presence: true
end
【问题讨论】:
标签: ruby-on-rails ruby