2012-05-01 44 views
9

我有一個表格:導軌和Haml的:不能得到一個表格的工作

%form{:action:method => "post"} 
    %fieldset 
     %label{:for => "title"} Title: 
     %input{:name => "title", :type => "text", :value => ""}/ 
     %label{:for => "notes"} Notes: 
     %input{:name => "notes", :type => "text", :value => ""}/ 
    %a.finish{:href => "/rotas", :method => "post"} Finish! 

但是,鏈接似乎不想要工作 - 也許我缺少Haml的一些基本的東西,或在軌。

我有一個:資源rotas在我的routes.rb和我的控制器有一個def創建方法。

任何幫助表示讚賞!謝謝!

btw。我使用腳手架生成 - 並且似乎使用相同的表單編輯模型和創建。它如何知道是做POST還是PUT?

+0

注:我更新我的回答,我認爲這個問題是在第一次簡單的實現,然後你有更多的問題,怎麼回事。 – Andrew

回答

10

1)你希望把表單的目標在行動:

%form{ :action => "/rotas", :method => "post" } 

2)你想一個提交按鈕,而不是鏈接。試試這個:

%input{ :type => "submit" } Finish! 

另外,我不知道爲什麼你把你輸入後/,這是沒有必要的任何東西。我不認爲它會受到傷害,但我認爲沒有理由包含它。

3)最後,Rails約定不使用HAML的元素,而是形成幫手,它應該是這樣的:

= form_tag '/rotas' do 
    = field_set_tag do 
    = label_tag :title, 'Title:' 
    = text_field_tag :title 
    = label_tag :notes, 'Notes:' 
    = text_field_tag :notes 
    = submit_tag 'Save Changes' 

原因之一是Rails的是要包括隱藏Authenticity Token場你的表單,通常Rails控制器不接受沒有這個真實性標記值提交的表單。這是爲了防止Cross-Site Request Forgery

試試這個,看看你得到什麼。

查看FormTagHelper API作爲參考。

+0

沒有這樣做 - 但是,我得到了它的另一種方式...檢查我的回答 – Karan

+0

啊,只是看到你的修改... – Karan

+0

我剛剛得到它的工作 - 我已經發布它作爲一個答案 - 你是什麼估計? – Karan

0

我得到它的工作使用下面的代碼:

= form_tag rotas_path do 
    = label :rota, :name, 'Name' 
    = text_field :rota, 'name' 
    = submit_tag 'Save Changes'