"title"} Title: %-6ren">
gpt4 book ai didi

ruby-on-rails - Rails和Haml : cant get a form to work

转载 作者:行者123 更新时间:2023-12-04 03:53:43 25 4
gpt4 key购买 nike

我有一个表格:

  %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中的基本内容。

我的route.rb中有一个:resource rotas,我的 Controller 有一个def create方法。

任何帮助表示赞赏!谢谢!

顺便提一句。我使用脚手架生成-似乎相同的表单用于编辑模型和创建。如何知道要执行POST还是PUT?

最佳答案

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 Controller 将不接受没有此真实性 token 值的情况下提交的表单。这是为了防止 Cross-Site Request Forgery

试试这个,看看会得到什么。

请参阅 FormTagHelper API以供引用。

关于ruby-on-rails - Rails和Haml : cant get a form to work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10403992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com