我的form_for提交按钮只能部分工作;数据保存在数据库中,但重定向失败。以下是该表单的相关代码:form_for提交按钮不适用于轨道上的红宝石
app/views/orders/new.html.erb
<h1>Menu</h1>
<%= link_to "Back to channel", current_channel_path %>
<div class="container">
<table class="table table-striped">
<thead>
<tr>
<th>Meal</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<% @menu_items.each do |t| %>
<p>
<tr>
<td><%= t.name %></td>
<td><%= number_to_currency(t.price) %></td>
<%= form_for (@order), url: orders_path, remote: true do |f| %>
<td><%= f.number_field :quantity, value: 1, class: "form-control", min: 1 %></td>
<%= f.hidden_field :meal, :value => t.name %>
<%= f.hidden_field :unit_price, :value => t.price %>
<td><%= f.submit "Order", class: "btn btn-primary" %></td>
<% end %>
</tr>
</p>
<% end %>
</tbody>
</div>
在此提供的routes.rb
Rails.application.routes.draw do
#For Orders
get 'orders' => 'orders#new'
post 'orders' => 'orders#create'
get 'all_orders' => 'orders#show'
resources :users
resources :orders
这里的代码订单
def new
@menu_items = MenuItem.all
@order = Order.new
end
def create
@order = current_channel.orders.build(order_params)
@order.user = current_user
if @order.save
flash.now[:success] = "Order has been recorded!"
redirect_to all_orders_path
else
flash.now[:danger] = "Order was not recorded!"
render 'new'
end
end
我的相关代码阅读提交按钮可能无法正常工作,因为它嵌套在表格中。我试图把表格放在表格之外,但提交仍然不会重定向;然而,提交按钮会在两种情况下在订单数据库中创建记录。任何想法为什么这是这种情况?预先感谢任何帮助!
你是什么意思重定向失败? – Pavan
您正在发出ajax请求。你需要create.js.erb文件不重定向。 – Athar
错误消息将有助于诊断 – nextstep