レール3.2.21を使用しています。特定の条件で新しい要素を作成した後、リクエストをリダイレクトしたい。私のコントローラーはアクションコードを作成します:
def create
@community_group = Community::Group.new(params[:community_group])
@community_group.member_ids = []
@community_group.member_ids = params[:member_ids].present? ? [@current_user.id] + params[:member_ids] : [@current_user.id]
respond_to do |format|
if @community_group.save
format.html{ redirect_to community_group_path(@community_group) }
else
flash.now[:error] = 'Group Saving Failed'
format.html{}
end
end
終わり
注意:私はremoteを使用しませんでした:フォーム送信にはtrue。
ログで、リクエストを正しいパスにリダイレクトし、正しいページをレンダリングしていることがわかります。Rails.logger.infoを使用して、期待されるページがレンダリングされているかどうかを確認しましたが、問題ないようです。作成アクションのログ情報:
Started POST "/community/groups" for 127.0.0.1 at 2015-03-03 14:18:47 +0600
Processing by Community::GroupsController#create as HTML
その後、正常にリダイレクトしてアクションを表示します(私のログ情報)
Redirected to http://localhost:3001/community/groups/53
Completed 302 Found in 1008.4ms (ActiveRecord: 208.7ms)
新しいリクエストが開始されました:(私のログ情報)
Started GET "/community/groups/53" for 127.0.0.1 at 2015-03-03 17:08:52 +0600
Processing by Community::GroupsController#show as HTML
Parameters: {"id"=>"53"}
しかし、私のビューは同じURLの同じページに残ります。私はこの問題を理解していません。誰かが同じタイプの問題に直面した場合は助けてください。
私のショーアクションコード:
def show
@community_group = Community::Group.find(params[:id])
@community_group_post = @community_group.community_group_posts.order("id DESC").page(params[:page]).per_page(10)
respond_to do |format|
format.html
end
終わり
私は自分の問題を解決しました。これは、コントローラーレベルの問題または要求リダイレクト関連の問題(コードによる要求リダイレクト)ではありませんでした。私の問題は、フォームターゲットとしてiframeを使用することでした。そのため、ターゲットiframeへのリダイレクトをリクエストして更新しますが、ページ全体が更新されることを期待していました。私はJavaScriptを使用して、問題を解決するためにページ全体を強制的に更新します。
window.location.reload();
JavaScriptでページをリロードする他の534の方法。
私のような初心者のWeb開発者のために、htmlフォームのターゲット属性に関する追加情報を追加したいと思います。
ターゲットは、フォームの送信時にサーバーからの応答を表示するウィンドウを指定するために使用されます。
可能な値は次のとおりです。
上記の情報は誰かにとって価値があると思います。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加