1

喜IM有兩個動作checkdisplay在我controller,我必須對應於那些動作視圖兩種觀點check.html.erbdisplay.html.erb。該檢查方法中有一個表單的視圖 這裏是check.html.erbRuby on Rails的參數出現在URL

<%= 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我不能使用的檢查方法的參數,因爲它們是空的,它拋出一個零對象錯誤 請幫

更新:

我用:方法=>後代替:方法= >看到後在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時,它說網頁已過期。

請讓我知道如果亞姆不清楚在問這個問題,或者如果IAM做一些顯然是錯誤的在這裏..

回答

2

你爲什麼不喜歡的網址爲參數?這是標準做法。無論如何,您應該使用POST並面對瀏覽器行爲的某些問題(例如像您所描述的那樣返回頁面或按Ctrl-R瀏覽頁面)或使用GET並在url中包含所有參數。這就是HTTP的工作原理。

+0

參數有用戶名和密碼,我不希望任何人看到用戶名和密碼 – user1455116

+2

然後你應該使用POST請求並獲得警告。我覺得你做錯了。而不是每次驗證你的動作,也許實施某種認證系統會更好(我推薦Devise)。 – binarycode