Rails & Haml: cant get a form to work
我有一张表格:
1 2 3 4 5 6 7 | %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或者Rails中缺少了一些基本的东西。
我的routes.rb中有一个:resource rotas,我的控制器有一个def create方法。
感谢您的帮助!谢谢!
顺便说一句,我是使用scaffold生成的——似乎相同的表单用于编辑模型和创建。它如何知道是做一个帖子还是一个看跌期权?
1)要将表单的目标放入操作中:
1 | %form{ :action =>"/rotas", :method =>"post" } |
2)您需要提交按钮,而不是链接。试试这个:
1 | %input{ :type =>"submit" } Finish! |
号
另外,我不知道为什么你要在输入之后放一个
3)最后,Rails约定不使用HAML元素,而是使用表单帮助器,如下所示:
1 2 3 4 5 6 7 | = 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将在表单中为您包含一个隐藏的真实性令牌字段,通常Rails控制器不会接受没有这个真实性令牌值提交的表单。这是为了防止跨站点请求伪造。
试试这个看看你能得到什么。
请参阅FormTagHelper API以获取参考。
我用以下代码让它工作:
1 2 3 4 | = form_tag rotas_path do = label :rota, :name, 'Name' = text_field :rota, 'name' = submit_tag 'Save Changes' |
。