【问题标题】:Static Pages, RoR Apps, Forms and Databases静态页面、RoR 应用程序、表单和数据库
【发布时间】:2014-04-06 19:50:12
【问题描述】:

我将一个静态网站引入了一个全新的 RoR 应用程序。我将整个目录放到公用文件夹中,这样我就不必更改应用程序布局。我现在想从其中一种静态页面表单中捕获数据...我在静态页面中有以下代码,但它没有正确保存到数据库中。

#public/test/index.html
<form action="resellers#create" method="post">
<label>
    <input id="number" type="text" placeholder="Enter number"/>
</label>
<label>
    <input id="type" type="text" name="email" placeholder="Email"/>
</label>
</form>

【问题讨论】:

    标签: ruby-on-rails database static controllers


    【解决方案1】:

    resellers#create 不是您可以在浏览器中提交的实际表单操作。这正是 Rails 在其路由中引用它的方式。您需要做的是运行rake routes,或者如果您使用的是RoR 4+,请在开发模式下访问/rails/info/routes,查看resellers#create 实际指向的路由,可能是POST /resellers

    但是,除非您在配置中特别设置它,否则您无法提交到表单,因为 Rails 很聪明,并且希望每次提交表单时都有一个安全令牌,以防止伪造和其他令人讨厌的事情。你最好让你的静态网站指向表单并且只是让表单的路由看起来像是你的静态网站的一部分。

    【讨论】:

    • 抱歉,您能否详细说明一下如何让静态网站指向表单?
    • 是的,您正确的经销商#create 指向 POST/reselelrs
    • 我的意思是,出于安全考虑,您需要在 Rails 中创建表单,然后为该表单设置一个路由(在 routes.rb 中),如果您关心它看起来像您的静态网站链接。
    • 但我希望将表单内置到静态页面中?你能给我一个例子吗?我无法理解。
    • 见我的第二段。 Rails 明确地不允许外部表单通过安全令牌的方式提交给服务器,这样恶意的人就无法向您发送不良数据并破坏您的系统。查看 Rails 安全指南的this section
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    相关资源
    最近更新 更多