1

嗨,我有两个动作checkdisplay在我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 在它的 url 中提交了表单中的所有参数 - /display?%username%=myname...我认为我的 check 方法需要在其中写入一些内容,以便将表单提交给 display 方法和url 不包含表单中的参数。我不能在使用 params 的 check 方法中使用参数,因为它们是空的,并且会引发 nil object 错误请帮助

更新:

在看到如何隐藏传递给方法的参数后,我使用了 :method => post 而不是 :method=> 进入 form_for 标记 (就像 form_for 似乎一样)?

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

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

4

1 回答 1

3

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

于 2012-06-29T01:32:31.013 回答