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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Ruby on Rails 6

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2773閲覧

vue(axios)からrailsのストロングパラメーターにpostして許可させる方法

widget11

総合スコア221

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Ruby on Rails 6

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/03/30 17:32

以下のようによくあるストロングパラメータを実装したコントローラがあり、ストロングパラメーターで許可している値以外保存ができないような、user情報を保存するapiがrailsで書かれているとして、vueからpostしてユーザー情報を保存したいです。
しかしvueからpostした時ストロングパラメーターを許可させる方法がわからないです。

vueのdataオプションに記載されている通り、data属性はformInlineというkeyにネストされる形となっています。
しかしこのままだとrequireメソッドの(:user)に許可されずpostが通らないと思うのですが、
どうすればuserにネストさせpostできるでしょうか?

ajax.post("http://localhost:3000/api/v1/users.json", { user_id: this.formInline.user_id, password: this.formInline.nickname, })

この箇所を上手く:userにネストさせる方法がわかりません。
以下が該当ソースコードです。

#user_controller.rb def create  @user = User.new(user_params)  if @user.save   format.json { render :show, status: :created, location: @user }  end end def user_params params.require(:user).permit(:user_id, :nickname) end
//resist.vue    /*中略*/    data: function() { return{ formInline: { user_id: '', nickname: '',     }    }   }, methods: { onComplete: function(){ axios .post("http://localhost:3000/api/v1/users.json", { user_id: this.formInline.user_id, password: this.formInline.nickname, }) .then((response) => { this.$router.push({ path: '/api/v1/users/'+localStorage.getItem("id") }); }) .catch(error => { alert(error); }) } }

ご教示いただけると幸いです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

user_params を params.permit(:user_id, :nickname)にすればよいです。
user_paramsを他でも使っているのなら、creatに直書き。

追記
質問タイトルに違和感があります。ストロングパラメーターを誤解しているのでは?と不安あり、なので例えばここみておいてください

投稿2021/03/30 21:19

編集2021/03/30 23:57
winterboum

総合スコア23567

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問