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

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

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

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Q&A

解決済

2回答

602閲覧

No route matches [GET] "/users/user.id"のエラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

0グッド

0クリップ

投稿2018/11/18 15:15

編集2018/11/19 03:43

やりたいこと/困っていること

参考書等を参考にしてrailsを勉強しています。
参考書を基に所々アレンジしたらエラーが起きてしまいました。
エラーメッセージで結ばれていないと警告されています。私としては結べていると思っているのですが何がいけないのでしょうか?

ruby

1<div class="main users-index"> 2 <div class="container"> 3 <h1 class="users-heading">ユーザー一覧</h1> 4 <!-- 以下の<% %>を使ってeach文を追加してください --> 5 <% @users.each do |user| %> 6 <div class="users-index-item"> 7 <div class="user-right"> 8 <!-- 以下の<%= %>を使ってユーザー名を表示してください --> 9 <%= link_to(current_user.username, "/users/#{user.id}") %> 10 </div> 11 </div> 12 <% end %> 13 <!-- 以下の<% %>を使ってeach文のendを追加してください --> 14 </div> 15</div>

ruby

1Rails.application.routes.draw do 2 get "users/index" => "users#index" 3 get "users/id" => "users#show" 4 #get 'users/index' 5 #get 'pages/home' 6 get "/" => "home#top" 7 get "about" => "home#about" 8 root to: 'pages#home' 9 devise_for :users 10 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 11end 12

ruby

1//uesr.rb 2class User < ApplicationRecord 3 # Include default devise modules. Others available are: 4 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 5 devise :database_authenticatable, :registerable, 6 :recoverable, :rememberable, :validatable 7 # nameカラムに関するバリデーションを作成してください 8 #validates :name, {presence: true} 9 10 # emailカラムに関するバリデーションを作成してください 11 #validates :email, {presence: true, uniqueness: true} 12 13 def username 14 return self.email.split('@')[0].capitalize 15 end 16 17 def index 18 @users = User.all 19 end 20 21 def show 22 @user = User.find_by(id: params[:id]) 23 end 24 25end

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

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

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

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

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

guest

回答2

0

コードに書いてある通りeach文追加すれば良いだけと思います。
user.idだけだとuserがローカル変数になっているので、ブロック作って変数定義しない限り使えないですね。

投稿2018/11/18 16:52

dounatsu

総合スコア78

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

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

退会済みユーザー

退会済みユーザー

2018/11/19 03:51

そうなんですね。 参考書等を記述を真似てeach文を書いてみたのですが案の定エラーが出てしまいました。 エラーメッセージはundefined method `each' for nil:NilClassと表示されています。 メソッドの中に何もないから実行できないと言われているのですが、user.rb内の@userの後のコードに問題があるのでしょうか?
guest

0

ベストアンサー

Modelで @users を定義してもModel内部からしか参照できませんよ
Modelで定義するのは自身だけで完結するものです
Viewとの仲介はControllerで行いましょう

ruby

1class User < ApplicationRecord 2 # Include default devise modules. Others available are: 3 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 4 devise :database_authenticatable, :registerable, 5 :recoverable, :rememberable, :validatable 6 # nameカラムに関するバリデーションを作成してください 7 #validates :name, {presence: true} 8 9 # emailカラムに関するバリデーションを作成してください 10 #validates :email, {presence: true, uniqueness: true} 11 12 def username 13 return self.email.split('@')[0].capitalize 14 end 15end 16 17class UsersController < ApplicationController 18 def index 19 @users = User.all 20 end 21 22 def show 23 @user = User.find_by(id: params[:id]) 24 end 25end

投稿2018/11/19 04:14

Ighrs

総合スコア656

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

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

dounatsu

2018/11/19 22:05

すみません。コードを全部見てませんでした。Ighrsさんの言う通り、@usersをusers_controllerに定義すればOKだと思います。
退会済みユーザー

退会済みユーザー

2018/11/20 11:44

回答していただきありがとうございました。 お二人のおかげで解決することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問