🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

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

Q&A

解決済

2回答

989閲覧

form-tagでデータがうまくコントローラーに転送されない

September4

総合スコア4

Ruby on Rails 5

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

0グッド

0クリップ

投稿2021/02/01 04:27

編集2021/02/02 13:37

前提・実現したいこと

rails でform_tagを使ってDBにデータを転送しようとしていますがsubmitを押しても下記のURLになるだけでDBに転送されていません。 binding.pryを試してみましたがどうやらコントローラまでデータが届いていないようです。

発生している問題・エラーメッセージ

https://.amazonaws.com/utf8=%E2%9C%93&authenticity_token=6k6jv7Vsd8tPghqsf3XqdJ4%2By%2FIYLS2cWhyX1JQX280K5YAjPAfHRYCS7DP8XUHaGydzuHm2rKqfUI0V66ksFg%3D%3D&address=aaa&comment=aaa

該当のソースコード

<%= form_tag('/comments', method: :post) do %> <input type="string" name="address"placeholder="メールアドレス、連絡先"></input> <textarea type="text" name="comment" placeholder= "内容"></textarea> <input class=btn type="submit" value="送信"> <%end%> class CommentsController < ApplicationController def new @comments=Comment.new end def show @comments =Comment.all end def create Comment.create(comment_params) end def destry @comments = Comment.find(params[:id]) end def purchase Payjp.api_key = ENV["PAYJP_SECRET_KEY"] Payjp::Charge.create( :amount => 500, :card => params['payjp-token'], :currency => 'jpy' ) end private def comment_params params.permit(:comment, :address) end end Rails.application.routes.draw do root 'comments#new' resources :comments do collection do post 'purchase' end end # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end

試したこと

binding.pryをしましたが変化はありませんでした。

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

September4

2021/02/02 03:41

忘れていましたすいません
winterboum

2021/02/02 12:17 編集

https://.amazonaws.com/utf8=%E2%9C%93&authenticity_token= と書かれているのは、どこから取り出したものですか? URLとしては奇妙な点がいくつか。 またエラーメッセージのらしくない ああ、ブラウザのURL欄か。 routes.rbも必要そう
September4

2021/02/02 13:40

urlでaws.comの後に開発環境のアドレスになりますが省略しています。それ以外は原文ママです。色々調べたんですが同じ現象が見当たりませんでした。
winterboum

2021/02/02 22:38

省略されると、必要な情報が落ちてしまうこともあるので、省略ではなく名前を変えるとかしてもらうほうが良いです。 : ・ ? = & などが落ちるとわからなくなる。 で、 Railsの標準的な書き方ではないですが、これでうまくいかない原因が見えてきません。「value="送信"」をcllickした時のlogを載せてください
winterboum

2021/02/03 07:34

このURLならcontrollerに渡っていると思います。 logはどうなってます?
September4

2021/02/03 12:06

log は確認することができました。 ただcreateメゾットには映らなくてデータも転送されていないです。です。
winterboum

2021/02/03 13:34

済みません、logがどうなっているかわからないと仮説が検証出来ないのでその先に進めません
September4

2021/02/07 06:35

Started GET "/?utf8=%E2%9C%93&authenticity_token=JkxzA4Im56cz577aUa12%2BeTCT914e2xYhezmovmDg8fG51CfC01XKfz3SEXShd1XYdv3lxng7W5AoPxjhj10HA%3D%3D&address=aaaa&comment=aaa" for 49.98.130.72 at 2021-02-07 06:33:25 +0000 Cannot render console from 49.98.130.72! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 Processing by CommentsController#index as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"JkxzA4Im56cz577aUa12+eTCT914e2xYhezmovmDg8fG51CfC01XKfz3SEXShd1XYdv3lxng7W5AoPxjhj10HA==", "address"=>"aaaa", "comment"=>"aaa"} Rendering comments/index.html.erb within layouts/application Rendered comments/index.html.erb within layouts/application (1.1ms) Completed 200 OK in 27ms (Views: 26.2ms | ActiveRecord: 0.0ms) rails sをした状態で入力するとターミナルにこういう風に出力されます。ごめんなさいlog というのが正確にどれかわかりませんでした。すいません
guest

回答2

0

Started GET "/? になってますね。はて、、、
view作りなおしても良いですか?
def new で @comments になってますが、単数形にしましょう。
で、
form_with model: @comment, local: true do |f|
として、
params.require(:comment).permit(:comment, :address)
に。

投稿2021/02/07 07:35

winterboum

総合スコア23567

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

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

September4

2021/02/09 08:16

params.require(:comment).permit(:comment, :address) これはcreateのメゾットですか?
September4

2021/02/09 09:25

index コントローラーは読み込め, 保存はできましたが肝心のcreateコントローラは読み込めません。form_tagの設定がおかしいのかrails がおかしいのか指定しても読み込んでくれません
winterboum

2021/02/09 12:09

formのところはどうしましたか?
September4

2021/02/10 04:49

form_withにしてもform_tagにしてもかわりませんでした。
winterboum

2021/02/10 05:27

日本語でなく、rails語で書いてください
September4

2021/02/10 05:49

<%=form_with model: @comment, local: true do |f|%> <%= f.text_field :address %> <%= f.text_field :comment %> <%= f.submit %> このように打ち込みましたが変わりませんでした
winterboum

2021/02/10 06:43

1. URLも全く同じですか? 2. omment_params はなおしましたか
September4

2021/02/10 07:38

https://cb0a2c0faf7245d594db51ecbe01de60.vfs.cloud9.ap-northeast-1.amazonaws.com/?utf8=%E2%9C%93&authenticity_token=xFtyFxZGSbMhjjRlhEBsQnmRJVvOnD1Mw%2FG1q6SacZwk8FGLny35Pe6ewvoHaMfs%2FIidEa8HvHoGva9q2ySGRw%3D%3D&address=aaaa&comment=aaaa&commit=Save+ params も確認してみましたが問題なかったです。newメゾットにComment.createをすると保存されるんですがそれがないと保存されません。ほんとはcreateメゾットに移動させて保存をするようにしたいです。
winterboum

2021/02/10 09:13

form_with でこのURLはおかしいな。address=でなくcomment[address]=の様になるはず。([]はescapeされますが) log見せてもらえますか。 及び、 viewが実際どう展開されてhtmlになっているか、<form>からaddressのinputのところまでを確認したい。
September4

2021/02/13 10:34

すいませんviewのhtmlを消すとなぜか思うとおりに動きました。色々と解決方法を探していただいた中、こう言った形になってしまい申し訳ありません。ありがとうございました。
guest

0

自己解決

なぜかhtmlを必要最低限にすると動いた。htmlが操作の邪魔をしていたようだ。

投稿2021/02/13 10:34

September4

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問