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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Ruby

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

2回答

2090閲覧

Railsで編集画面を表示しようとしたときのエラーが解決できないので教えてください。

koume

総合スコア458

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Ruby

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2017/09/14 15:08

Rails5.1.3でWebアプリケーション制作の勉強中です。ブラウザで編集画面にアクセスしようとするとエラーがでてしまい。
解決できずにいます。ルーティングのエラーかと思いますが、自力では解決できないのでどなたか教えていただけないでしょうか?
エラー内容及び関係すると思われるコードは以下になります。

エラー内容 ActionController::UrlGenerationError in Customer::Top#index Showing /home/vagrant/chibi/chibi/app/views/customer/top/dashboard_b.html.erb where line #7 raised: No route matches {:action=>"edit", :controller=>"customer/banks", :host=>"example.com"}, missing required keys: [:id] Extracted source (around line #7): 5 <li><%= link_to 'プログラム一覧', :customer_programs %></li> 6 <li><%= link_to '受信メッセージ一覧', :customer_messages %></li> 7 <li><%= link_to '口座アカウント編集', :edit_customer_bank %></li> 8</ul>
エラー内容 ActionView::Template::Error (No route matches {:action=>"edit", :controller=>"customer/banks", :host=>"example.com"}, missing required keys: [:id]): 4: <ul class="menu"> 5: <li><%= link_to 'プログラム一覧', :customer_programs %></li> 6: <li><%= link_to '受信メッセージ一覧', :customer_messages %></li> 7: <li><%= link_to '口座アカウント編集', :edit_customer_bank %></li> 8: </ul> app/views/customer/top/dashboard_b.html.erb:7:in `_app_views_customer_top_dashboard_b_html_erb__4251273561019877823_70347071425080' app/controllers/customer/top_controller.rb:11:in `index'
app/views/customer/top/dashboard_b.html.erb <% @title = 'ダッシュボード' %> <h1><%= @title %></h1> <ul class="menu"> <li><%= link_to 'プログラム一覧', :customer_programs %></li> <li><%= link_to '受信メッセージ一覧', :customer_messages %></li> <li><%= link_to '口座アカウント編集', :edit_customer_bank %></li> </ul>
rails routes customer_banks GET /mypage/banks(.:format) customer/banks#index {:host=>"example.com"} POST /mypage/banks(.:format) customer/banks#create {:host=>"example.com"} new_customer_bank GET /mypage/banks/new(.:format) customer/banks#new {:host=>"example.com"} edit_customer_bank GET /mypage/banks/:id/edit(.:format) customer/banks#edit {:host=>"example.com"} customer_bank GET /mypage/banks/:id(.:format) customer/banks#show {:host=>"example.com"} PATCH /mypage/banks/:id(.:format) customer/banks#update {:host=>"example.com"} PUT /mypage/banks/:id(.:format) customer/banks#update {:host=>"example.com"} DELETE /mypage/banks/:id(.:format) customer/banks#destroy {:host=>"example.com"}
app/controllers/banks_controller.rb class Customer::BanksController < Customer::Base def index logger.debug customer_params @search_form = Customer::BankSearchForm.new(customer_params[:search]) @banks = @search_form.search.page(params[:page]) end def show @bank = Bank.find(params[:id]) end def new @bank_form = Customer::BankForm.new end def edit @bank_form = Customer::BankForm.new(Bank.find(params[:id])) end def create end def update end def destroy end end

関連すると思われるコードは以上です。リンク先に edit_customer_bank を記述しているのですが、エラーが出てしまいます。
new_customer_bank の登録画面は表示されるのですが、編集画面が表示できないので困っております。
:idを指定しなければいけないのかな?と思いますが、どこに、どのように記述すればいいのか見当もつきません。
どなたか解決方法を教えていただけませんでしょうか?宜しくお願いいたします。

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

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

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

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

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

guest

回答2

0

一覧表示の必要が無いため単数リソースのルーティングに設定を変え
resources :banks を resouce :bank に変更し、
:edit_customer_bank で編集ページを表示できるようになりました。

投稿2017/09/15 07:55

koume

総合スコア458

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

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

0

ベストアンサー

ルーティングで/mypage/banks/:id/editとなっている以上、このURLを解決するには「id」が必要です。

実際問題、「どの口座」を編集するかわからなければどうしようもありませんし。

投稿2017/09/14 22:35

maisumakun

総合スコア145183

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

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

koume

2017/09/15 03:34

回答ありがとうございます。「どの口座」かは現在ログインしている人の 口座情報を編集したいということなんですが、bankテーブルの外部キーの customer_idを指定すればいいということなのでしょうか?どう記述すれば いいのかわかりません。たとえば以下のような記述なのでしょうか? :edit_customer_bank: customer.id それとも :edit_customer_bank: id(customer.id) :edit_customer_bank: current_customer.id :edit_customer_bank: id(current_customer.id)みたいな記述でいいのでしょうか?調べてみましたが id の指定をどこにどのように記述すればいいのかよくわかりません。教えていただけないでしょうか?
maisumakun

2017/09/15 03:58

edit_customer_bank_path(customer.id)のように、メソッドで指定して下さい。 (というより、link_toのリンク先をシンボルで指定できることを、逆に知らなかったという)
koume

2017/09/15 05:02

回答ありがとうございます。おっしゃるとおりでlink_toのリンク先をシンボルで指定できることを理解していませんでした。現状は、エラーに遭遇→調べる→理解するといったレベルです。参考書などを何回も読み直すだけなので、応用が利かないし、どんな場面で使うのかなど初心者の域を出られないというのが現状です。なので、いつも回答をいただいて大変助かっております。また、勉強になっています。ご面倒をおかけしますが、今後とも宜しくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問