2015-10-17 60 views
0

我正在試圖學習如何使用「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聲明中。不用說,這些絕望的努力並沒有解決問題。

我花了大量的時間試圖弄清楚這一點。我將不勝感激任何幫助。

回答

0

在你的路線,你可以只寫

resources :demo 

,然後只需在您的意見

<%= form_for @demo do |f| %> 

附:使用此如果它不是單一資源,你應該將控制器,視圖和路由中演示的名稱更改爲演示

相關問題