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
中有两个动作check
和display
,我在与这些动作对应的视图中有两个视图check.html.erb
和display.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