1

こんにちは、私には 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 ページの有効期限が切れていると表示されます。

質問をするのが明確でない場合、またはここで明らかに間違ったことをしている場合はお知らせください..

4

1 に答える 1

3

URLにパラメータを入れたくないのはなぜですか?それが標準的な方法です。とにかく、POSTを使用してブラウザの動作に関する問題に直面するか(説明したとおりにページに戻る、ページをCtrlキーを押しながらRキーを押すなど)、GETを使用してすべてのパラメータをURLに含める必要があります。これがHTTPの仕組みです。

于 2012-06-29T01:32:31.013 に答える