質問編集履歴

2 追記

qaz3330

qaz3330 score 111

2017/01/21 20:31  投稿

form_tagでPOSTする際に、Railsからのリクエストは処理せずに、javascriptからのリクエストのみを処理したい
rails4でwebアプリケーションを作成しております。
支払い機能作成にあたり、決済プロバイダの仕様上、javascriptから
リクエストを送らなくてはいけません。
ただ、Railsなので、form_tagなどを使わず、htmlのformなどを用いて
作ったのち、リクエストしてもauthenticity_tokenが付かないため、エラーになってしまいます。
そのため、Railsからのリクエストは処理せず、javascriptからの処理のみをやりたいのですが、
現状、以下のように `return` をしてしまうと、 `Missing template` のエラーになり、かといって
` return redirect_to :back ` とすると、javascriptの処理が出来なくなってしまいます。
こういう場合、どのようにすれば良いのでしょうか?
宜しくお願いします。
```
= form_tag(paid_url, method: :post, id: 'payment') do
 input type="text" xxxxx  
 input type="text" xxxxx  
 input type="submit" value="決済"
javascript:
 $(function(){
   var $form = $('#payment');
   $form.submit(function(event) {
       $form.append($('<input type="hidden" name="hoge">').val("hoge"));
       $form.submit();
     });
   });
 });
```
```
class PaymentsController
 def paid
   # form_tagからきたリクエストは処理せず、jsからのリクエストのみを通したい
   return unless params[:hoge].present?
   # 以降javascriptから送られた内容を元に後続の処理を進める
   xxxxxxx
   xxxxxxx
 end
end
```
  • JavaScript

    23951 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Ruby on Rails 4

    2596 questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

1 変更

qaz3330

qaz3330 score 111

2017/01/21 20:30  投稿

form_tagでPOSTする際に、Railsからのリクエストは処理せずに、javascriptからのリクエストのみを処理したい
rails4でwebアプリケーションを作成しております。
支払い機能作成にあたり、決済プロバイダの仕様上、javascriptから
リクエストを送らなくてはいけません。
ただ、Railsなので、form_tagなどを使わず、htmlのformなどを用いて
作ったのち、リクエストしてもauthenticity_tokenが付かないため、エラーになってしまいます。
そのため、Railsからのリクエストは処理せず、javascriptからの処理のみをやりたいのですが、
現状、以下のように `return` をしてしまうと、 `Missing template` のエラーになり、かといって
` return redirect_to :back ` とすると、javascriptの処理が出来なくなってしまいます。
こういう場合、どのようにすれば良いのでしょうか?
宜しくお願いします。
```
= form_tag(paid_url, method: :post, id: 'payment') do
 input type="submit" value="決済"
javascript:
 $(function(){
   var $form = $('#payment');
   $form.submit(function(event) {
       $form.append($('<input type="hidden" name="hoge">').val("hoge"));
       $form.submit();
     });
   });
 });
```
```
class PaymentsController
 def paid
   # form_tagからきたリクエストは処理せず、jsからのリクエストのみを通したい
   return if params[:hoge].present?
   return unless params[:hoge].present?
   # 以降javascriptから送られた内容を元に後続の処理を進める
   xxxxxxx
   xxxxxxx
 end
end
```
  • JavaScript

    23951 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Ruby on Rails 4

    2596 questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る