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

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

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

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

Q&A

1回答

510閲覧

Rails editアクションを使いたいのにnewアクションととらえられてしまう

Hiroko.Imamura

総合スコア0

Ruby on Rails

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

0グッド

0クリップ

投稿2020/07/19 18:47

編集2020/07/20 08:30

Todoアプリを作っています。
$ rails g model List name:string description:text
で作成したデーターに
$ rails g model Item name:string list:references
をセカンドモデルとして入れました。

Itemの作成や追加、削除はできましたが編集ができません。(どうしても新規としてとらえられてしまいます)

該当のソースコード

edit.htm.erb

<h2>itemの編集</h2> <%= form_for [@list, @list.items.build] do |f| %> <%= f.text_field :name %> <%= f.submit %> <% end %>

items_controller.rb

class ItemsController < ApplicationController def edit @list = List.find params[:list_id] end def update @list = List.find(params[:list_id]) @item = @list.items. find params[:list_id] if @ltem.update(ltem_params) redirect_to lists_path else redirect_to edit_list_path(item.list, item) end end def create @list = List.find params[:list_id] @list.items.create(item_params) redirect_to list_path (@list) end def item_params params.require(:item).permit(:name) end def destroy @list = List.find params[:list_id] @item = @list.items. find params[:id] @item.destroy redirect_to list_path(@list) end end

routes.rb

Rails.application.routes.draw do devise_for :users get 'welcome/index' root 'welcome#index' resources :lists do resources :items end # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end

Rails3週間目の初学者です。
質問のしかたもままならぬ状態ですが、他に調べるべきファイルがあれば教えてください。

よろしくお願いいたします。

edit.html.erb に飛ぶ前の show.html.erb です。

show.html.erb

<h2><%= @list.name %></h2> <p><%= @list.description %></P> <hr> <% @list.items.each do |item| %> <%= item.name %> <%= link_to "編集", edit_list_item_path(item.list, item) %> <%= link_to "削除", [item.list, item], method: :delete, data: {confirm: "本当によろしいですか?"} %> <br> <% end %>

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

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

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

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

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

guest

回答1

0

編集を呼び出しているところが問題で、新規を呼び出してしまってます。
呼びだされた後のcodeではなく、「編集を呼び出しているつもり」のとろこのcodeも載せてください。

投稿2020/07/19 19:57

winterboum

総合スコア23347

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

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

Hiroko.Imamura

2020/07/20 08:31

edit.html.erb に移動する前の show.html.erb を質問の最後に追記させて頂きました。 よろしくお願いいたします。
Hiroko.Imamura

2020/07/20 08:55

確かに新規を呼び出ししていたので、edit.htm.erbを下記のように訂正してみましたが、NameErrorがでてしまいます。 変更前 <%= form_for [@list, @list.items.build] do |f| %> 変更後 <%= form_for :item, url: edit_list_item_path(@list,item), method: :patch do |f| %>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問