Ruby on rails Rails表单_有问题:表单数据未保存在Rails中的控制器实例中
我试图通过使用AJAX发布控制器实例来保存座位号。单击提交按钮后,响应标题显示Ruby on rails Rails表单_有问题:表单数据未保存在Rails中的控制器实例中,ruby-on-rails,Ruby On Rails,我试图通过使用AJAX发布控制器实例来保存座位号。单击提交按钮后,响应标题显示STATUS 200 OK,单击预览(响应)后,数据显示在同一页面上。 我的管制员票方法座位 路由.rb文件 get '/tickets/seat' => 'tickets#seat', as: 'seat' post '/tickets/seat' => 'tickets#seat' seat.html.erb 响应预览 有人能告诉我为什么我的数据没有保存在controller实例变量中吗?首先,为什
STATUS 200 OK
,单击预览(响应)后,数据显示在同一页面上。
我的管制员票方法座位
路由.rb文件
get '/tickets/seat' => 'tickets#seat', as: 'seat'
post '/tickets/seat' => 'tickets#seat'
seat.html.erb
响应预览
有人能告诉我为什么我的数据没有保存在controller实例变量中吗?首先,为什么需要编写自定义jqeury来执行ajax?从表单中删除
local:true
将发送AJAX请求。此外,您在控制器中的seat
操作没有做任何有意义的工作。我强烈建议您进行实践,这将帮助您识别问题并解决它。首先,为什么您需要编写自定义jqeury来实现ajax?从表单中删除local:true
将发送AJAX请求。此外,您在控制器中的seat
操作没有做任何有意义的工作。我强烈建议您进行实践,这将帮助您识别问题并解决问题。
get '/tickets/seat' => 'tickets#seat', as: 'seat'
post '/tickets/seat' => 'tickets#seat'
<%= form_with(url: "tickets/seat",:html => {id:'seat'}, local: true) do |f| %>
<% plane = Trip.find(params[:trip_id]).aeroplane %>
<% erow = plane.e_row %>
<% ecol = plane.e_col %>
<% brow = plane.b_row %>
<% bcol = plane.b_col %>
<% frow = plane.f_row %>
<% fcol = plane.f_col %>
<div class="text-center"><strong><%= plane.name %></strong></div>
<div class="plane">
<div class="cockpit">
<h1>Please select a seat</h1>
</div>
<div class="exit exit--front fuselage"></div>
<ol class="cabin fuselage">
<!-- Economy Class Configuration -->
<div class='text-center seat-class'><strong>Economy Class</strong></div>
<% (1..erow).each_with_index do |i| %>
<% alpha = '@' %>
<li class="row">
<ol class="seats" type="Economy">
<% (1..ecol).each do %>
<% alpha = alpha.next %>
<% if Trip.find(params[:trip_id]).tickets.where("seat_class LIKE ? AND seat_number LIKE ?", "Economy","#{alpha}"+"#{i}").count==1 %>
<li class="seat eco">
<%= check_box_tag("seat_number[]","Economy."+"#{alpha}"+"#{i}", false, disabled: true) %>
<%= label("seat_number", "#{alpha}"+"#{i}",:value => "Economy."+"#{alpha}"+"#{i}") %>
</li>
<% else %>
<li class="seat eco">
<%= check_box_tag("seat_number[]","Economy."+"#{alpha}"+"#{i}") %>
<%= label("seat_number", "#{alpha}"+"#{i}",:value => "Economy."+"#{alpha}"+"#{i}") %>
</li>
<% end %>
<% end %>
</ol>
</li>
<% end %>
<!-- First Class Configuration -->
<div class='text-center seat-class'><strong>Premium Economy Class</strong></div>
<% (1..frow).each_with_index do |j| %>
<% alpha = '@' %>
<li class="row">
<ol class="seats" type="Premium Economy">
<% (1..fcol).each do %>
<% alpha = alpha.next %>
<% if Trip.find(params[:trip_id]).tickets.where("seat_class LIKE ? AND seat_number LIKE ?", "Premium Economy","#{alpha}"+"#{j}").count==1 %>
<li class="seat pre">
<%= check_box_tag("seat_number[]","Premium Economy."+"#{alpha}"+"#{j}", false, :disabled => true) %>
<%= label("seat_number", "#{alpha}"+"#{j}",:value => "Premium Economy."+"#{alpha}"+"#{j}") %>
</li>
<% else %>
<li class="seat pre">
<%= check_box_tag("seat_number[]","Premium Economy."+"#{alpha}"+"#{j}") %>
<%= label(:seat_number, "#{alpha}"+"#{j}",:value => "Premium Economy."+"#{alpha}"+"#{j}") %>
</li>
<% end %>
<% end %>
</ol>
</li>
<% end %>
<!-- Business Class Configuration -->
<div class='text-center seat-class'><strong>Business Class</strong></div>
<% (1..brow).each_with_index do |k| %>
<% alpha = '@' %>
<li class="row">
<ol class="seats" type="Business">
<% (1..bcol).each do %>
<% alpha = alpha.next %>
<% if Trip.find(params[:trip_id]).tickets.where("seat_class LIKE ? AND seat_number LIKE ?", "Business","#{alpha}"+"#{k}").count==1 %>
<li class="seat bus">
<%= check_box_tag("seat_number[]","Business."+"#{alpha}"+"#{k}", false, {:disabled => true}) %>
<%= label("seat_number", "#{alpha}"+"#{k}",:value => "Business."+"#{alpha}"+"#{k}") %>
</li>
<% else %>
<li class="seat bus">
<%= check_box_tag("seat_number[]","Business."+"#{alpha}"+"#{k}") %>
<%= label("seat_number", "#{alpha}"+"#{k}", :value => "Business."+"#{alpha}"+"#{k}") %>
</li>
<% end %>
<% end %>
</ol>
</li>
<% end %>
</ol>
<div class="exit exit--back fuselage"></div>
</div>
<%= f.submit('confirm seats') %>
<% end %>
<div class = "ticket">
<%= @seats %>
</div>
$(document).on('turbolinks:load', function(){
$('#seat').submit(function(e) {
e.preventDefault()
var valuesToSubmit = $(this).serialize();
var qstring = location.search;
console.log(valuesToSubmit);
$.ajax({
type: "POST",
url: '/tickets/seat'+ qstring, //sumbits it to the given url of the form ?trip_id=1
data: valuesToSubmit,
dataType: "HTML" // you want a difference between normal and ajax-calls, and json is standard
}).done(function(data){
console.log("success", data);
});
return false; // prevents normal behaviour
});
});