我正在試圖學習如何使用「form_for」幫手。我在http://localhost:3000/demo/new
上展示了一個超級簡單的表格。然後我填寫三個text_fields並嘗試創建一個新記錄。在Chrome中,我收到「無數據收到」錯誤,並且在Safari中出現「服務器意外斷開連接」錯誤。使用form_for - >沒有收到數據(Chrome),斷開連接(Safari)
我知道表單IS傳遞參數,因爲調用raise parameters.inspect
表明我的參數正在傳遞。但是,當我運行該方法時,出現上述錯誤。 (順便說一下,數據被保存到數據庫中,這使得這個錯誤更加令人困惑,事實上,數據被多次保存(準確的說是7次),這表明我處在某種循環中。)
這是我的控制器:
class DemoController < ApplicationController
def index
@demos = Demo.all
end
def new
@demo = Demo.new
end
def create
# raise params.inspect
@new_demo = Demo.create(demo_params)
if @new_demo
redirect_to 'index'
else
render 'new'
end
end
private
def demo_params
params.require(:demo).permit(:fname, :lname, :city)
end
end
這是我的視圖(用的form_for):
<h1>Demo#new</h1>
<p>Find me in app/views/demo/new.html.erb</p>
<%= form_for @demo, url: create_path(:action => 'create') do |f| %>
<%= f.text_field :fname %>
<%= f.text_field :lname %>
<%= f.text_field :city %>
<%= f.submit "Create" %>
<% end %>
這裏是我的路線:
get 'demo/index'
get 'demo/show'
get 'demo/new'
get 'demo/edit'
post '/demo/create'
post '/demo/create' => 'demo#create', as: :create
match ':controller(/:action(/:id))', :via => [:get, :post]
順便說一句,我改變了兩個「/演示/創建」路線(添加正斜槓)只是爲了解決這個問題。因爲我也遇到了導致無法找到路由「/ demo/create」的錯誤。出於同樣的原因,我將(:action => 'create')
添加到create_path
聲明中。不用說,這些絕望的努力並沒有解決問題。
我花了大量的時間試圖弄清楚這一點。我將不勝感激任何幫助。