2012-05-01 18 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'