我在check
中有display
和controller
两项操作,我在视图中有两个与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将表单中提交的所有参数都包含在它的网址中 - /display?%username%=myname
...我认为我的检查方法需要写入其中的内容以便表单是提交显示方法,url不包含表单中的参数。
我不能使用params中的参数使用params,因为它们是空的并且它抛出一个nil对象错误
请帮忙
更新
我使用了:method =&gt;发帖而不是:method =&gt;看到后进入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时,它表示网页已过期。
如果我不明白提问或者我是否在这里做了明显错误的事情,请告诉我。
答案 0 :(得分:3)
为什么不喜欢在url中使用参数?这是标准做法。无论如何,您应该使用POST并面对浏览器行为的一些问题(例如,如您所述返回页面或按住Ctrl-R-ing页面)或使用GET并在网址中包含所有参数。这就是HTTP的工作方式。