ruby on rails - How would I display the department_name rather than the department_id? -


i learning ror , trying setup association between user model , department model. currently, able choose department dropdown field , save it. however, when showing user or presenting user in list, department shows id number , not department name. cant figure out doing wrong. appreciated!

here models:

class user < activerecord::base     belongs_to :departments end class department < activerecord::base     has_many :users end 

here controllers:

class userscontroller < applicationcontroller     before_action :logged_in_user, only: [:edit, :update, :destroy]     before_action :admin_user, only: [:index, :destroy]      def new         @user = user.new     end      def create         @user = user.new(user_params)         if @user.save             log_in @user             flash[:success] = "account created!"             redirect_to root_path         else             render 'new'         end     end      def index         @filterrific = initialize_filterrific(             user,             params[:filterrific],             select_options:                  {                     sorted_by_name: user.options_for_name,                     department_select: department.options_for_select                 },         ) or return          @users = @filterrific.find.page(params[:page])          respond_to |format|             format.html             format.js         end     end      def show         @user = user.find(params[:id])     end      def edit         @user = user.find(params[:id])     end      def update         @user = user.find(params[:id])         if @user.update_attributes(user_params)             flash[:success] = "profile updated."             redirect_to edit_user_path         else             render 'edit'         end     end      def destroy         user.find(params[:id]).destroy         flash[:success] = "user deleted."         redirect_to users_url     end      private          def user_params             params.require(:user).permit(:name, :email, :work_phone, :department, :cell_phone, :password, :password_confirmation)         end          # before filters         def logged_in_user             unless logged_in?                 store_location                 flash[:danger] = "please log in first."                 redirect_to login_url             end         end          # confirms admin user.         def admin_user             redirect_to(root_url) unless current_user.admin?         end  end  class departmentscontroller < applicationcontroller     def create         @department = department.new(department_params)         if @department.save             redirect_to(:action => 'index')         else             render 'new'         end     end      def index         @department = department.all     end      def show         @department = department.find(params[:id])     end      def edit         @department = department.find(params[:id])     end      def update         @department = department.find(params[:id])     end      def delete         @department = department.find(params[:id])     end      def destroy         department.find(params[:id]).destroy         redirect_to(:action => 'index')     end      private          def department_params             params.require(:department).permit(:name, :department_ids => [])         end  end 

my edit html:

<% provide(:title, "edit user") %>  <h1>update profile</h1>  <div class="row">     <div class="col-md-6 col-md-offset-3">         <%= form_for(@user) |f| %>             <%= f.label :name, class: 'form-spacing' %>             <div class="input-group">                 <%= f.text_field :name, class: 'form-control' %>                 <span class="input-group-addon" id="basic-addon2">                     <span class="glyphicon glyphicon-user"></span>                 </span>             </div>              <%= f.label :email, class: 'form-spacing' %>             <div class="input-group">                 <%= f.email_field :email, class: 'form-control' %>                 <span class="input-group-addon" id="basic-addon2">                     <span class="glyphicon glyphicon-envelope"></span>                 </span>             </div>              <%= f.label :work_phone, class: 'form-spacing' %>             <div class="input-group">                 <%= f.text_field :work_phone, class: 'form-control' %>                 <span class="input-group-addon" id="basic-addon2">                     <span class="glyphicon glyphicon-phone"></span>                 </span>             </div>              <%= f.label :cell_phone, class: 'form-spacing' %>             <div class="input-group">                 <%= f.text_field :cell_phone, class: 'form-control' %>                 <span class="input-group-addon" id="basic-addon2">                     <span class="glyphicon glyphicon-phone"></span>                 </span>             </div>              <%= f.label :department, class: 'form-spacing' %>             <div class="input-group">                 <div class="input-group-btn">                     <%= f.collection_select :department, department.order(:name), :id, :name, {}, {class: 'form-control'} %>                 </div>             </div>              <%= f.label :password, class: 'form-spacing' %>             <%= f.password_field :password, class: 'form-control' %>              <%= f.label :password_confirmation, "confirmation", class: 'form-spacing' %>             <%= f.password_field :password_confirmation, class: 'form-control' %>              <%= f.submit "save changes", class: "btn btn-primary center-block btn-margin" %>         <% end %>     </div> </div> 

list html:

<div class="row well-sm">     <div class="col-lg-6">         <div id="filterrific_results">             <div>                 <%= page_entries_info users %><%= render_filterrific_spinner %>             </div>         </div>     </div>     <div class="pull-right">         <%= link_to 'reset', reset_filterrific_url, class: "btn btn-default" %>     </div> </div>  <table class="table table-condensed">     <tr>         <th>profile</th>         <th>name</th>         <th>email</th>         <th>work #</th>         <th>cell #</th>         <th>department</th>     </tr>     <% users.each |user| %>         <tr>             <td><%= link_to user_path(user.id), class: "btn btn-xs" %>                 <i class="glyphicon glyphicon-user"></i>                 <% end %>             </td>             <td><%= link_to(user.name, edit_user_path(user)) %></td>             <td><%= user.email %></td>             <td><%= user.work_phone %></td>             <td><%= user.cell_phone %></td>             <td><%= user.department %></td>         </tr>     <% end %>     </table>  <%= will_paginate users %> 

here trace receive when trying use user.department.name:

nomethoderror in users#index showing c:/users/ngkuligoski/desktop/workspace/tgna_app/app/views/users/_list.html.erb line #33 raised:  undefined method `name' "30":string trace of template inclusion: app/views/users/index.html.erb  rails.root: c:/users/ngkuligoski/desktop/workspace/tgna_app  application trace | framework trace | full trace app/views/users/_list.html.erb:33:in `block in _app_views_users__list_html_erb___81315648_98180820' app/views/users/_list.html.erb:23:in `_app_views_users__list_html_erb___81315648_98180820' app/views/users/index.html.erb:39:in `_app_views_users_index_html_erb___1258199830_74038920' app/controllers/users_controller.rb:33:in `index' 

when switching belongs_to :department instead of belongs_to :departments, following error:

activerecord::associationtypemismatch in userscontroller#update department(#70215520847100) expected, got string(#70215501520980)  extracted source (around line #49):  47: def update 48:     @user = user.find(params[:id]) 49:     if @user.update_attributes(user_params) 50:         flash[:success] = "profile updated." 51:         redirect_to edit_user_path 52:     else  rails.root: /users/nkuligoski/desktop/tgna_app  application trace | framework trace | full trace app/controllers/users_controller.rb:49:in `update' 

after removing :department user.params, not receive error when submitting form. however, recieving following error @ list view , getting "unpermitted parameter: department" error feedback sql.

nomethoderror in users#index showing /users/nkuligoski/desktop/tgna_app/app/views/users/_list.html.erb line #33 raised:  undefined method `name' nil:nilclass extracted source (around line #33):  31            <td><%= user.work_phone %></td> 32            <td><%= user.cell_phone %></td> 33            <td><%= user.department.name %></td> 34        </tr> 35    <% end %> 36    </table>  trace of template inclusion: app/views/users/index.html.erb  rails.root: /users/nkuligoski/desktop/tgna_app  application trace | framework trace | full trace app/views/users/_list.html.erb:33:in `block in _app_views_users__list_html_erb__2838324632886829267_70215593187400' app/views/users/_list.html.erb:23:in `_app_views_users__list_html_erb__2838324632886829267_70215593187400' app/views/users/index.html.erb:39:in `_app_views_users_index_html_erb___3592670951755992954_70215580220040' app/controllers/users_controller.rb:33:in `index' 

try belongs_to :department instead of belongs_to :departments inside user class.


Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -