Note that there are some explanatory texts on larger screens.

plurals
  1. POCouldn't find User with id=edit in rails tutorial chapter 9
    primarykey
    data
    text
    <p>I am new to rails. I am following Michael Hartl's railstutorial book. In chapter 9, when I tried to edit the user profile it won't work. /user/4/edit renders the edit page But when I click settings inside the user profile which should render the edit page, it gets routed to /user//edit and the following error is shown:</p> <p>ActiveRecord::RecordNotFound in UsersController#show Couldn't find User with id=edit</p> <p>I know it will be a small error but I cant figure it out. So thanks for any help in advance.</p> <p>Here are my files</p> <p>users_controller.rb</p> <pre><code>class UsersController &lt; ApplicationController def show @user = User.find(params[:id]) end def new @user=User.new end def create @user = User.new(params[:user]) if @user.save sign_in @user flash[:success] = "Welcome!" redirect_to @user else render 'new' end end def edit @user = User.find(params[:id]) end def update @user = User.find(params[:id]) if @user.update_attributes(params[:user]) flash[:success] = "Profile updated" sign_in @user redirect_to @user else render 'edit' end end end </code></pre> <p>_header.html.erb</p> <pre><code>&lt;header class="navbar navbar-fixed-top navbar-inverse"&gt; &lt;div class="navbar-inner"&gt; &lt;div class="container"&gt; &lt;%= link_to "project",root_path, id: "logo" %&gt; &lt;nav&gt; &lt;ul class="nav pull-right"&gt; &lt;li&gt;&lt;%= link_to "Home", root_path %&gt;&lt;/li&gt; &lt;li&gt;&lt;%= link_to "Help", help_path %&gt;&lt;/li&gt; &lt;% if signed_in? %&gt; &lt;li&gt;&lt;%= link_to "Users", '#' %&gt;&lt;/li&gt; &lt;li id="fat-menu" class="dropdown"&gt; &lt;a href="#" class="dropdown-toggle" data-toggle="dropdown"&gt; Account &lt;b class="caret"&gt;&lt;/b&gt; &lt;/a&gt; &lt;ul class="dropdown-menu"&gt; &lt;li&gt;&lt;%= link_to "Profile", user_path(current_user) %&gt;&lt;/li&gt; &lt;li&gt;&lt;%= link_to "Settings", edit_user_path(@current_user) %&gt;&lt;/li&gt; &lt;li class="divider"&gt;&lt;/li&gt; &lt;li&gt; &lt;%= link_to "Sign out", signout_path, method: "delete" %&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;% else %&gt; &lt;li&gt;&lt;%= link_to "Sign in", signin_path%&gt;&lt;/li&gt; &lt;% end %&gt; &lt;/ul&gt; &lt;/nav&gt; &lt;/div&gt; &lt;/div&gt; &lt;/header&gt; </code></pre> <p>sessions_helper.rb</p> <pre><code>module SessionsHelper def sign_in(user) cookies.permanent[:remember_token] = user.remember_token self.current_user = user end def signed_in? !current_user.nil? end def current_user=(user) @current_user = user end def current_user @current_user ||= User.find_by_remember_token(cookies[:remember_token]) end def sign_out self.current_user = nil cookies.delete(:remember_token) end end </code></pre> <p>edit.html.erb</p> <pre><code>&lt;% provide(:title,'Edit user') %&gt; &lt;h1&gt;Update your profile&lt;/h1&gt; &lt;div class="row"&gt; &lt;div class="span6 offset3"&gt; &lt;%= form_for (@user) do |f| %&gt; &lt;%= render 'shared/error_messages' %&gt; &lt;%= f.label :name %&gt; &lt;%= f.text_field :name %&gt; &lt;%= f.label :email %&gt; &lt;%= f.text_field :email %&gt; &lt;%= f.label :password %&gt; &lt;%= f.password_field :password %&gt; &lt;%= f.label :password_confirmation, "Confirm password" %&gt; &lt;%= f.password_field :password_confirmation %&gt; &lt;%= f.submit "Save changes", class: "btn btn-large btn-primary" %&gt; &lt;% end %&gt; &lt;%= gravatar_for @user %&gt; &lt;a href="http://gravatar.com/emails" target="_blank"&gt; Change &lt;/a&gt; &lt;/div&gt; &lt;/div&gt; </code></pre> <p>routes.rb</p> <pre><code>SampleApp::Application.routes.draw do resources :users resources :sessions, only: [:new, :create, :destroy] root to: 'static_pages#home' match '/signup', to: 'users#new', via: [:get, :post] match '/signin', to: 'sessions#new', via: [:get] match '/signout', to: 'sessions#destroy', via: [:delete] match '/help', to: 'static_pages#help', via: [:get, :post] match '/contact', to: 'static_pages#contact', via: [:get, :post] match '/about', to: 'static_pages#about', via: [:get, :post] end </code></pre> <p>sessions_controller.rb</p> <pre><code>class SessionsController &lt; ApplicationController def new end def create user = User.find_by_email(params[:session][:email].downcase) if user &amp;&amp; user.authenticate(params[:session][:password]) sign_in user redirect_to user else flash.now[:error] = "Invalid email/password combination" render 'new' end end def destroy sign_out redirect_to root_path end end </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload