gpt4 book ai didi

ruby-on-rails - 在 Controller 中存储用户输入值

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:36 25 4
gpt4 key购买 nike

我有一个名为 Welcome 的 Controller ,其 View 名为 index。

在我的索引 View 中,我创建了一个这样的小表单。

<%= form_for :location do |f| %>

<%= f.label :Longitude %><br>

<%= f.text_field :integer %>
<br>
<br>
<%= f.label :Latitude %><br>
<%= f.text_field :integer %>


<p>
<%= f.submit %>
</p>
<% end %>

在此表单中,用户可以输入一些整数值作为经度和纬度。一旦用户输入经度和纬度的值。他们点击提交。提交后,我想将这些值存储在我的 Controller 中。所以我使用以下方法,其中我有两个实例变量从表单中获取值。

def index
@long = params[:longitude]
@lat = params[:latitude]
end

在我的 routes.rb 中有

get 'welcome/index'
post 'welcome/index'

请告诉我哪里出错了。另外,如果有人可以建议更好的方法来做到这一点,我也会很感激我是 Rails 的新手,我想学习正确的做事方式,这样我就不会在早期养成坏习惯。

最佳答案

它不起作用的原因是因为您的字段都被命名为 :integer,并且由于它们共享相同的名称,浏览器将只发送一个值。

因此,对于您的代码,如果您在第一个字段中填写“a”,在第二个字段中填写“b”,那么您的参数将包含如下内容:

{ location: { integer: "aaa" } }

这显然不是您想要的!如果您的 HTML 看起来更像这样(我去掉了布局部分以使事情更清晰):

<%= form_for :location do |f| %>
<%= f.label :longitude %>
<%= f.text_field :longitude %>

<%= f.label :latitude %>
<%= f.text_field :latitude %>

<%= f.submit %>
<% end %>

然后您可以访问 Controller 中的参数 params[:location][:longitude]params[:location][:latitude]

要查看您的表单与此表单的效果之间的区别,一个好主意是检查 html。查看 input name 属性和 label 属性,看看它们如何与 Rails 接收的参数相匹配。此外,当您发布表单时,请务必查看您的服务器日志以查看参数! :)

关于ruby-on-rails - 在 Controller 中存储用户输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29461755/

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