rails 6.0.0
ruby '2.6.5'
ルーティングのネストを行ったにですが、ルーティングのidがうまく取り出せないです。
現在、http://localhost:3000/users/id/としたいです。
ですかhttp://localhost:3000/usersでエラーになります。
NameError in UsersController#index
undefined local variable or method `id' for #
@userのid が取り出せてないのでコントローラーの記述がおかしいのかとは思います。
試行錯誤してみましたがうまくいかないので、どなたかアドバイス、いただけないでしょうか?
ビューの記述の仕方もあってますか?
routes.rb
1 2Rails.application.routes.draw do 3 devise_for :doctors, controllers: { 4 sessions: 'doctors/sessions', 5 passwords: 'doctors/passwords', 6 registrations: 'doctors/registrations' 7 } 8 devise_for :users, controllers: { 9 sessions: 'users/sessions', 10 passwords: 'users/passwords', 11 registrations: 'users/registrations' 12 } 13 14 resources :doctors, only: [:index, :show] 15 root to: 'healths#index' 16 17 resources :users do 18 resources :medicines, only: [:create, :new, :index] 19 end 20end 21
class UsersController < ApplicationController def index @user = User.find(params[id]) end def new @user = User.new end def create @user = User.create(user_params) if @user.save reder :show else render 'new' end end def show @user = User.find(params[:id]) end private def user_params params.require(:user).permit(:nickname, :email, :password, :gender_id, :birth, :bloodtype_id, :emergencyperson, :emergencycall) end end
<div class="user-access"> <div class="user-nav"> <%= image_tag "remote.jpg", class:"main-pict" %> <% if user_signed_in? && current_user.id %> <div class="btn-icon-nav"> <%= link_to destroy_user_session_path, method: :delete do %> <div class="btn-icon"> <p>ログアウト</p> </div> <% end %> <%= link_to new_user_medicine_path(@user.id), class: "post" do %> <div class="btn-icon"> <p>投稿する</p> </div> <% end %> </div> <% else %> <div class="btn-icon-nav"> <%= link_to new_user_session_path do %> <div class="btn-icon"> <p>ログイン</p> </div> <% end %> <%= link_to new_user_registration_path do %> <div class="btn-icon"> <p>新規会員登録</p> </div> <% end %> </div> <% end %> </div> </div>
class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_many :medicines extend ActiveHash::Associations::ActiveRecordExtensions belongs_to_active_hash :gender belongs_to_active_hash :bloodtype with_options presence: true do validates :nickname validates :email, uniqueness: { case_sensitive: true }, format: { with: /\A[\w+\-.]+@[a-z\d\-.]+.[a-z]+\z/i } validates :password, length: { minimum: 6 }, format: { with: /\A(?=.*?[a-z])(?=.*?[\d])[a-z\d]+\z/i} validates :gender_id, numericality: { other_than: 0 } validates :birth validates :bloodtype_id, numericality: { other_than: 0 } validates :emergencyperson validates :emergencycall end end
class Medicine < ApplicationRecord
belongs_to :user
end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/29 03:13