【发布时间】:2021-07-13 23:31:36
【问题描述】:
下面的解释很大,但问题真的很简单。
我在https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/ruby-on-rails/lessons/forms做一个简单的表单项目。
我的第一部分,我需要手动构建一个表单——这样当我使用它的辅助方法时,我可以看到 Rails 为我做了很多事情。 我被困在这一点上:
在您的标签中指定方法和操作属性(使用 $ rails 路由根据您创建的资源查看预期的 HTTP 方法和路径)。
routes.rb 文件如下所示:
资源:用户,仅限:[:create, :new]
我不知道如何确定我应该对表单使用哪种方法 - 发布或获取。 我不知道如何确定应该使用哪个操作路径。
我已经上网,Rails 指南等,并且到目前为止已经解决了其他主题,但是对于这个我无法通过它。
到目前为止我的表格:
<form action='/create' method="post" accept-charset="UTF-8">
<label for="username"></label>
<input type="text" id="username" name="username"><br>
<label for="email"></label>
<input type="text" id="email" name="email"><br>
<label for="password"></label>
<input type="text" id="password" name="password"><br>
<input type="submit" id="submit" value="Submit" >
</form>
一旦我在服务器上运行它,然后提交表单——我做了——我应该得到:
“提交您的表单并查看服务器输出。糟糕,我们没有正确的 CSRF 真实性令牌 (ActionController::InvalidAuthenticityToken) 来防止跨站点脚本攻击和表单劫持。如果您没有收到错误,您使用了步骤 1 中的错误方法。”
【问题讨论】:
-
如果您使用表单构建器,rails 将为您处理真实性令牌Form Helpers
-
就是这样。我首先在 HTML 中手动进行。我当时遇到的问题不是CSRF,而是实际上如何确定form标签的action path属性和method属性。请你帮我解决一下好吗?
-
你已经把那部分弄对了。
<form action='/create' method="post" accept-charset="UTF-8">您的错误是下面的帖子将帮助解决的令牌。话虽如此,我不确定您为什么要“在 HTML 中手动执行”,因为这不是在 Rails 中开发时的普遍做法,而且老实说,代码审查员可能会不赞成。 -
如果您只是问我如何查看重新创建的路由,然后打开终端导航到应用程序的根目录并输入
rake routes,这将显示 HTTP 动词、路由名称、处理此请求的控制器#action
标签: ruby-on-rails ruby forms