こんにちは、私には 2 つのアクションがcheck
ありdisplay
、私controller
と私には 2 つのビューが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
ことです。 URL にフォームのパラメータが含まれていません。パラメータが空であるため、params を使用してチェック メソッドでパラメータを使用できず、nil オブジェクト エラーがスローされます。助けてください
アップデート:
:method=> get の代わりに :method => post を使用 し、メソッドに送信するパラメーターを非表示にする方法を確認した後 (form_for のように)、form_for タグで取得しましたか?
URLにパラメーターは表示されません。しかし、display.html.erb (do_something.html.erb など) から別のビューに移動し、戻るボタンをクリックして display.html.erb に戻ると、Web ページの有効期限が切れていると表示されます。
質問をするのが明確でない場合、またはここで明らかに間違ったことをしている場合はお知らせください..