我正在关注 Head First Rails 这本书,但由于它使用的是 Rails 2,而不是 3,因此遇到了很多麻烦。目前,我正在经历它让您创建一个用于在 a 上预订座位的系统的部分航班。航班的显示页面有部分已预订座位和一个表格,以便您可以预订座位。
我一辈子都无法让系统正常工作,因此当您单击“预订座位”时,更改会立即出现在上面的座位列表中。Rails 一直抱怨说,当我单击“预订座位”时,缺少座位/更新模板。我什至直接在第一站使用“答案代码”,但它仍然无法正常工作!请有人帮忙!!
问题1:
这是座位的控制器代码:
def create
@seat = Seat.new(params[:seat])
render :update do |page|
if @seat.save
page.replace_html 'notice', 'Seat was successfully booked'
else
page.replace_html 'notice', 'Sorry - the seat could not be booked'
end
page.replace_html 'seats', :partial => 'flights/seat_list',
:locals => {:seats => @seat.flight.seats }
end
end
# PUT /seats/1
# PUT /seats/1.xml
def update
@seat = Seat.find(params[:id])
respond_to do |format|
flash[:notice] = 'Seat was successfully updated.'
format.html { redirect_to(@seat) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @seat.errors, :status => :unprocessable_entity }
end
end
end
问题2:
在尝试“ajaxify”表单时,这本书告诉我使用 remote_form_for,据我所知,它没有出现在 rails 3 中。所以我尝试使用:
<h1>New seat</h1>
<% form_for(seat), :remote => true do |f| %>
<%= f.error_messages %>
<%= f.hidden_field :flight_id %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :baggage %><br />
<%= f.text_field :baggage %>
</p>
<p>
<%= f.submit "Create" %>
</p>
<% end %>
但这给了我一个错误
显示 c:/Ruby193/coconut/app/views/flights/_new_seat.html.erb 其中第 2 行提出:
c:/Ruby193/coconut/app/views/flights/_new_seat.html.erb:2:语法错误,意外',',期待keyword_end');form_for(seat), :remote => true do |f| ^ c:/Ruby193/coconut/app/views/flights/_new_seat.html.erb:18:语法错误,意外keyword_ensure,期待$end
我在这里撞墙,任何帮助将不胜感激!