Ruby on rails参数出现在url中

时间:2012-06-28 21:05:18

标签: ruby-on-rails ruby-on-rails-3.1 parameter-passing url-parameters

我在check中有displaycontroller两项操作,我在视图中有两个与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将表单中提交的所有参数都包含在它的网址中 - /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时,它表示网页已过期。

如果我不明白提问或者我是否在这里做了明显错误的事情,请告诉我。

1 个答案:

答案 0 :(得分:3)

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