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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

712閲覧

rails 投稿機能を作成したいが投稿が上手くいかない

imagine

総合スコア0

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/05/19 22:23

前提・実現したいこと

投稿機能を実装しているが
上手く反映されません

発生している問題・エラーメッセージ

NoMethodError in Photos#index undefined method `photo_lists' for #<#<Class:0x00007ffd79082b08>:0x00007ffd7e989b98> Did you mean? photo_url

該当のソースコード

view

1<%= form_with(url: root_path, local: true, method: :get, class: "search-form") do |form| %> 2 <%= form.text_field :keyword, placeholder: "検索する", class: "search-input" %> 3 <%= form.submit "検索", class: "search-btn" %> 4<% end %> 5<div class="contents row"> 6 <%= photo_lists(@photos) %> 7</div>

routes

1Rails.application.routes.draw do 2 # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html 3 root to: 'photos#index' 4 resources :photos 5end

controllers

1class PhotosController < ApplicationController 2 def index 3 @photos = Photo.all 4 end 5end

model

1class Photo < ApplicationRecord 2 belongs_to :user 3end

試したこと

<%= photo_lists(@photos) %>

<%= photo_url(@photos) %>
に変更した。

エラーメッセージは消えたが
本来投稿して欲しい箇所に
保存した(name,text,image)を表示できるようにしたいが

http://localhost:3000/photos/%23%3CPhoto::ActiveRecord_Relation:0x00007ffd7936b270%3E
↑の文章が表示される

補足情報(FW/ツールのバージョンなど)

初めての質問なのでわかりにくいようでしたらすみません。

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

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

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

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

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

maisumakun

2021/05/19 22:27

元のコードにあった「photo_lists」は、どこかで定義していた(あるいは何かしらのGemにある)ものでしょうか?
imagine

2021/05/19 22:35

ご返答ありがとうございます。 以前似たようなアプリを作成しておりまして、その時に同じ箇所に「〜_lists」と記述していましたので、それと同じように記述しました。
maisumakun

2021/05/19 22:37

「似たようなアプリ」の方では、「〜_lists」が別途で定義されていたのかもしれません。
imagine

2021/05/19 22:55 編集

「似たようなアプリ」で別途で定義してました、、、。 <% @photos.each do |photo| %> <div class="content_post" style="background-image: url(<%= photo.image %>);"> <p><%= photo.text %></p> <span class="name"> <%= photo.name %> </span> </div> <% end %> に置き換えましたら反映できました。 ありがとうございます。
guest

回答1

0

自己解決

<%= photo_lists(@photos) %>

は定義した状態で反映される。

<% @photos.each do |photo| %>

<div class="content_post" style="background-image: url(<%= photo.image %>);"> <p><%= photo.text %></p> <span class="name"> <%= photo.name %> </span> </div> <% end %>

↑を「記述する」or「別途で定義する」
その必要性があった。

別途で定義した場合
<%= photo_lists(@photos) %>
の記述が成立した。

投稿2021/05/19 22:56

imagine

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問