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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1152閲覧

Ruby on Rails 4でブラウザ側からDataBaseの一部を指定してUpdateするフォームの作成方法について

AudioStakes

総合スコア41

Ruby on Rails 4

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/01/02 11:53

Ruby on RailsでDataBaseの一部を指定してUpdateするフォームの作成方法について質問させていただきます。

具体的には、
・変更したいカラムをブラウザ側から選択する方法
・選択した3つの項目結果をpostして、その部分だけをupdateする方法
が知りたいと思っていますが、以下の実現したいことが可能になるのであればどのような方法でも構いませんので、ご教示お願い致します。

更新したいtableの構造は以下の様になっております。
モデル名:User
カラム名:id, user_name, sex, age, place...など10以上のカラムがあります

実現したいことは、
ブラウザ側からの操作で
① ユーザー(user_name)を選択
② そのユーザーのどのカラムを変更したいか選択(sex, age, place...など10以上のカラムから)
③ 選択したカラムについてどう変えるかそのカラムに対応する値を選択
④ ①〜③の結果を出力(POST)してデータベースを更新

viewについては以下のような所まで作成しておりますが、カラムを選択する方法が見つからず、そこで止まっております。

<div> <%= form_for @user, :url => {:action => 'update'} do |f| %> <%# ↓①変更したいuser_nameを選択 %> <%= f.label :user_name %> <%= f.collection_select :user_name, User.all, :user_name, :user_name %> <%# ↓②選択したuser_nameの、変更したいカラムを選択 f.collection_selectではカラム選択はできない?? %> <%# ↓③選択したuser_nameのカラムをどのような値に変更したいか選択 %> <%= f.label :??? %> <%= f.collection_select :???, User.all, #②で選択したカラム, #②で選択したカラムに対応する値 %> <%# ↓④選択した結果をsubmit %> <%= f.submit "Save changes"%> <% end %> </div>

コントローラーの方は以下のように作っています。updateメソッドについてはまだ手を付けていません。

#今回の要件に必要となるedit, updateメソッドだけ載せています class UserController < ApplicationController def edit @user = User.new #どのユーザーに対しても変更できるよう、あえてnewとしてみました。 end def updated end end

参考にできるURLや、ネット検索に適した単語などだけでも教えていただければ幸いです。
よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

まず、編集対象のユーザーを選択するところで、f.collection_selectを使用せずに、select_tagを使用して、params[:id]に編集対象ユーザーのIDを入れてしまうのがお勧めです。

Ruby

1<%= select_tag "id", options_from_collection_for_select(User.all, "id", "name") %>

こうしてあげれば、updateメソッドの方で、簡単に対象ユーザーを取得出来るでしょう。

どのカラムを更新したいか選択する部分は、Javascriptで何とかする以外ないでしょうね。
カラム選択インプットのchangeアクションを引っかけて、入力部分のDOMをいじるのが良さそうです。

ただ、選択対象の選択対象カラムの現在値を反映させるためには、事前に全てのUserのデータを読み込んでおくか、非同期で読み出して反映する以外ないでしょう。

投稿2016/01/05 02:40

rifuch

総合スコア1901

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

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

AudioStakes

2016/01/09 02:44

回答有り難うございます! まずuserを選択した後にそれをPOSTし、find_byでそのuser情報を取得して代入するという方法を思いつきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問