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

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

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

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

Ruby on Rails

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

Q&A

3回答

2523閲覧

ActiveRecord::RecordNotFound

kumamo-n

総合スコア14

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2016/08/10 16:50

編集2022/01/12 10:55

kijimodelとvotemodelでアソシエーションを用いて関連付けを行っているのですが、

kijis/index.html.erb: <% if current_member %> <p><%= link_to "投票した記事", :voted_kijis %></p> <% end %>

:voted_kijisを押すと kijicontrollerのshowアクションの部分に対して
def show
@kijis = Kiji.readable_for(current_member).find(params[:id])
end

ActiveRecord::RecordNotFound at /kijis/voted
Couldn't find Kiji with 'id'=voted [WHERE (member_id = 3 OR status <> 'draft')]
とエラーが出てしまいます。votedのidが見つかりませんと言われてるみたいですが、DBにはvoteのidは残っているので対処方法としては何が考えられますでしょうか。私の認識ではvoted_kijisを指定するとkijiscontrollerのvotedアクションが呼び出されるとはずなのですが。

link_to :voted_kijis は<a href="/kijis/voted">に変換されてます。
rake routesでルートを確認すると
voted_kijis GET /kijis/voted(.:format) kijis#voted
となっています。

コントローラに制御が渡った時の params の内容は
votedです

ソースコード

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

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

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

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

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

guest

回答3

0

params[:id] が 'voted'
に対して
find(params[:id])
を実行しようとしているのでは?
DB の列がどうなっているか不明ですが、次のいずれかの対処が考えられます。

* find_by(xxx: params[id]) として、何か別の列で検索をする。
* find() に DB の id が渡るようにする。

投稿2016/08/15 23:53

編集2016/08/17 17:36
katoy

総合スコア22324

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

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

kumamo-n

2016/08/16 14:12

DBの列はid, member_id, title, body,released_at,status,created_at,updated_at となっています。試しにfind_by(member_id: params[:id])で実行するとkijis/show.html.erbの@kijis.titleに対してNomethoderrorがでます。おそらくparamsでうまくDBから情報を抜き取れてないからだと思われます コンソールで@kijisの中身を確認すると空でした。そうなると一番適切な方法としてはどういった形がよろしいでしょうか。
guest

0

erb に書いた link_to がどのような HTML に変換されているかの確認が必要です。
ブラウザで "ページのソースを表示” に相当する機能を使って確認してみてください。

<a href= ...> で示されているパスのコントローラがどれかを確認してください。
$ rake routes で path とトントローラの関係が一覧表示されます。

コントーローのどこでエラーが発生しているかを提示してください。
コントローラに制御が渡った時の params の内容も提示してください。

投稿2016/08/14 23:57

katoy

総合スコア22324

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

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

kumamo-n

2016/08/15 17:36

ご指摘ありがとうございます。編集させていただいたので再度確認していただけると幸いです
guest

0

ruby

1<%= link_to "投票した記事", {:controller => "kiji", :action => "voted"} %> 2

これでいかがでしょうか

投稿2016/08/13 01:52

y_y3

総合スコア179

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

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

kumamo-n

2016/08/13 04:07

回答ありがとうございます。ですが上記と同じエラーが出てしまいます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問