Ruby on rails 参数出现在 url

Posted

技术标签:

【中文标题】Ruby on rails 参数出现在 url【英文标题】:Ruby on rails parameters are appearing in the url 【发布时间】:2012-06-30 11:01:05 【问题描述】:

您好,我的controller 中有两个动作checkdisplay,我在与这些动作对应的视图中有两个视图check.html.erbdisplay.html.erb。 check 方法在它的视图中有一个表单 这是check.html.erb

<%= form_for :display_command_list, :method => "get", :url => :action => "display" do |f| %>
                  <%= f.label :username %>
                  <%= f.text_field :username %><br />
                  <%= f.label :password %>
                  <%= f.password_field (:password) %><br />
                  <%= f.submit "Submit"%>
                <% end%>

下面是两个动作:

def check
end

def display
#some code here
respond_to do |format|
format.html
end
end

当我在检查视图中填写表单时,它会提交表单的显示操作和显示操作重定向到显示视图。但问题是 /display.html.erb 在它的 url 中提交了表单中的所有参数 - /display?%username%=myname... 我认为我的检查方法需要在其中写入一些内容以便将表单提交给display 方法和 url 不包含表单中的参数。 我不能在使用 params 的检查方法中使用参数,因为它们是空的,并且会引发 nil 对象错误 请帮忙

更新:

我使用 :method => 帖子而不是 :method=> 在看到后进入 form_for 标记 how can I hide params I transmit to a method (like form_for seems to do)?

并且它没有在 url 中显示任何参数。 但是现在当我从 display.html.erb(比如 do_something.html.erb)转到另一个视图并单击返回按钮返回到我的 display.html.erb 时,它说网页已过期。

如果我在问这个问题时不清楚,或者我在这里做的事情明显错误,请告诉我..

【问题讨论】:

【参考方案1】:

你为什么不喜欢在 url 中有参数?这是标准做法。无论如何,您应该使用 POST 并面对浏览器行为的一些问题(例如返回到您所描述的页面或 Ctrl-R-ing 页面)或使用 GET 并在 url 中包含所有参数。这就是 HTTP 的工作原理。

【讨论】:

参数有用户名和密码,我不希望任何人看到用户名和密码 那么您应该使用 POST 请求并获得警告。我感觉你做错了什么。与其每次都验证您的操作,不如实施某种身份验证系统(我推荐 Devise)。

以上是关于Ruby on rails 参数出现在 url的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails:没有 Authlogic 的 perishable_token?

CGC 报名 | Ruby on Rails : An Introduction

Ruby On Rails:用于其他语言的复数形式

Ruby on rails,改变最近创建的脚手架

如何在 Ruby on Rails 中“漂亮”地格式化 JSON 输出

Paypal 经常性问题 ruby​​ on rails