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

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

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

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

Ruby on Rails

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

HTML

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

Q&A

解決済

1回答

252閲覧

ユーザー情報を編集させるフォームを表示させたい

ikt_erk122

総合スコア40

Ruby

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

Ruby on Rails

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

HTML

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

0グッド

0クリップ

投稿2019/05/30 05:59

【実現させたいこと】
ユーザー毎に編集フォームを表示させる。
【困っていること】
index.html.erbのパーシャルに記載したform_forの第一引数はnilにできないというエラーが起きている。
【質問】
引数を持たせるにはどのように記載すれば正しいのでしょうか?

・エラー
イメージ説明
・index.html.erb

<% provide(:title, @title) %> <h1><%= @title %></h1> <div class="row"> <div class="search_form"> <%= render 'users/search_form' %> </div> </div> <%= will_paginate %> <% unless @users.empty? %> <ul class="users"> <%= render @users %> </ul> <% else %> <p class="search"> ユーザーが見つかりませんでした。<br> 探しているユーザー名を確認してください。 </p> <% end %> <%= will_paginate %>

・_user.html.erb

<li> <%= user.name %> <% if current_user.admin? && !current_user?(user) %><br> |<%= link_to "削除", user, method: :delete, data: { confirm: "削除してよろしいですか?" },class: "btn btn-primary" %><br> <div class="panel panel-default"> <a class="btn btn-primary" role="button" data-toggle="collapse" href="#collapseExample" aria-expanded="false" aria-controls="collapseExample">編集</a> </div> <div class="collapse" id="collapseExample"> <div class="panel-body"> <%= form_for(@user, url: {controler: "users", action: "edit_index" }) do |f| %> <%= render 'shared/error_messages', object: @user %> <%= f.label :名前 %> <%= f.text_field :name, class: 'form-control' %> <%= f.label :メールアドレス %> <%= f.email_field :email, class: 'form-control' %> <%= f.label :所属 %> <%= f.text_field :department, class: 'form-control' %> <%= f.submit "更新する", class: "btn btn-primary" %> <% end %> </div> </div> <% end %> </li>

・users_controller.rb

def index if params[:q] && params[:q].reject { |key, value| value.blank? }.present? @q = User.ransack(search_params, activated_true: true) @title = "検索結果" else @q = User.ransack(activated_true: true) @title = "ユーザー一覧" end @users = @q.result.paginate(page: params[:page]) end def edit_index @user = User.find(params[:id]) end def update_index @user = User.find(params[:id]) if @user.update_attributes(update_index_params) flash[:success] = "更新しました。" redirect_to users_url else render 'index' end end private def update_index_params params.require(:user).permit(:name, :email, :department) end

・routes.rb

get 'edit_index/:id', to: 'users#edit_index', as: :edit_index patch 'users/update_index', to: 'users#update_index' resources :users

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。
直接的な回答でなくて恐縮なのですが・・・
ソースを拝見するとRailsのやり方から少し外れている気もするので、scaffoldでモデルを作成して、比べてみると良いと思います。

ruby

1#Testモデルをscaffoldで作る。 2rails generate scaffold test name:string email:string department:string 3rails db:migrate

比べ終わったら、rails destroyで作ったtestは、全て削除。
その上で、deviseの条件分岐などを行うと理解しながら、期待することを実現できるかと思います。

投稿2019/05/31 02:09

no1knows

総合スコア3365

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

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

ikt_erk122

2019/05/31 06:18

回答ありがとうございます。testモデルを作成しましたが、どのように比較したらいいのでしょうか?
no1knows

2019/05/31 06:41

testsページを開くと、ユーザーのCRUD(Create(生成)、Read(読み取り)、Update(更新)、Delete(削除))ができるようになっているかと思います。 新規追加でデータを1つ作成してください。 その後、一覧画面(testsページ)へ戻り、編集ボタンをおしてください。 編集して保存してください。 これで質問頂いている「ユーザー毎に編集フォームを表示させる。」形ができているのが確認できたかと思います。 それぞれのファイル(ビュー、コントローラー、モデル、ルート)がRailsの基本的な書き方なので、それに沿って、ご自身のコードを修正すると良いかと思います。 具体的にはルートファイルであればresources :testsだけが追記されているかと思います。 それだけで、編集フォームの表示などができているはずなのですが、質問には、edit_indexというものが追記されているので、Railsのやり方から少し外れているかもしれないなという印象を受けたのです。
ikt_erk122

2019/06/04 07:02

文字の色などが変わってcssを確認しても以前と同じなのですが、なぜ変わったのでしょうか?
no1knows

2019/06/04 14:25

あぁ、scaffoldのcssの質問、ikt_erk122さんのだったんですね。 こちらの質問の引数をもたせてユーザー情報を編集させるフォームを表示させるは、うまくできましたか?
ikt_erk122

2019/06/05 07:38

返信遅れてすみません。 おかげさまで解決できました。ありがとうございました。
no1knows

2019/06/05 08:44

それは良かったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問