質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

951閲覧

railsでPOST送信した時のリロード問題について

tk_tail

総合スコア6

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2018/01/08 10:23

###前提・実現したいこと
rubyはいろいろ利用していますが、railsを勉強中です。
(rubyは2.4.3、railsは5.0.6で、centos7.4で動作)

POSTでページ間のデータ送信をテストしています。
下記コードで普通に動作します…が、送信後にF5等でリロードすると、データが消えます。

###発生している問題・エラーメッセージ
理論的に考えれば、これが正しい(リロード時はデータを送信しないから)とわかるのですが、他のサイトではブラウザ側で「POSTデータを使ってるけど再送信する?(意訳)」と出るときもあります。

これはrails側でブラウザの再送信の動作を止めているのでしょうか?

たぶんそうなのだろうと思いますが、アチコチ検索しても理論的な説明を見つけられませんでした…。
「こういう場合はgetを使え」ということなのかと思いますが、どうも考えが腑に落ちません。

ご存じであれば教えていただければと思います。
もし解除する方法(ブラウザ側の再送信サポートを有効化)があれば、そちらも…。

エラーメッセージ

###該当のソースコード

ruby

1●コントローラー側:test01_controller.rb 2class Test01Controller < ApplicationController 3 def send_test 4 @send_word = params[:send_word] 5 end 6end

ruby

1●ビュー側:send_test.html.erb 2<h1>Test01#send_test</h1> 3<p>Find me in app/views/test01/send_test.html.erb</p> 4 5<%= form_tag({controller: :test01, action: :send_test}, method: :post, id: :se1, class: :se1) do %> 6<label for="send">送信ワード:</label> 7<%= text_field_tag :send_word, @send_word, size: 30 %> 8<%= submit_tag "送信" %> 9<% end %>

ruby

1●routes.rb 2post 'test01/send_test'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問