ruby on rails - No route matches {:action=>"edit", :controller=>"admin/progresses"} missing required keys: [:id] -


while trying create edit link admin dashboard.i have error... no route matches {:action=>"edit", :controller=>"admin/progresses"} missing required keys: [:id] please explain me what's wrong?

here rake routes:

 admin    /admin(.:format)                         admin/dashboard#index          admin_progresses    /admin/progresses(.:format)              admin/progresses#index                           post   /admin/progresses(.:format)              admin/progresses#create        new_admin_progress    /admin/progresses/new(.:format)          admin/progresses#new       edit_admin_progress    /admin/progresses/:id/edit(.:format)     admin/progresses#edit            admin_progress    /admin/progresses/:id(.:format)          admin/progresses#show                           patch  /admin/progresses/:id(.:format)          admin/progresses#update                           put    /admin/progresses/:id(.:format)          admin/progresses#update                           delete /admin/progresses/:id(.:format)          admin/progresses#destroy 

this views/admin/progresses/index.html.slim

.container   .row     h2 pepito's dashboard     br     = link_to "new article", new_admin_progress_path, class:'btn btn-success'     br     br      .dashboard       - @progresses.each |progress|         .row             .col-xs-2             h4             = progress.title.capitalize           .col-xs-2             h4             = progress.date           .col-xs-5             h4               = truncate(progress.content, length: 90)           .col-xs-1             = link_to 'view', progresses_path, class:'btn btn-success'           .col-xs-1             = link_to 'edit', edit_admin_progress_path(@progress), class:'btn btn-primary'           .col-xs-1             = link_to 'destroy', "#", class:'btn btn-danger', method: :delete         hr 

this admin/progresses_controller.rb:

  class admin::progressescontroller < admin::applicationcontroller      def index       @progresses = progress.all     end      def new       @progress = progress.new     end      def show       @progress = progress.find(params[:id])      end      def create        @progress = progress.new(progress_params)         respond_to |format|          if @progress.save            unless params[:progress_attachments].nil?              params[:progress_attachments]['image'].each |a|                @progress_attachment = @progress.progress_attachments.create!(:image => a)              end            end            format.html { redirect_to admin_progresses_path, notice: 'progress created.' }          else            format.html { render action: 'new' }          end        end       end       def edit        @progress = progress.find(params[:id])      end       def destroy         @progress = progress.find(params[:id])      end       def update       @progress = progress.find(params[:id])         if @progress.update(params[:progress].permit(:title, :date, :content, :main_image, progress_attachments_attributes: [:id, :progress_id, :image]))           redirect_to progresses_path         else       render 'edit'         end     end        private       def progress_params         params.require(:progress).permit(:title, :content, :date, :main_image, progress_attachments_attributes: [:id, :progress_id, :image])      end    end 

many ! :)

edit

thanks answers!

= link_to 'edit', edit_admin_progress_path(progress), class:'btn btn-primary' worked !!

try changing

= link_to 'edit', edit_admin_progress_path(@progress), class:'btn btn-primary' 

to

= link_to 'edit', edit_admin_progress_path(progress), class:'btn btn-primary' 

the variable want use not instance variable, it's local variable

@progresses.each |progress| 

Comments

Popular posts from this blog

java - Jasper subreport showing only one entry from the JSON data source when embedded in the Title band -

mapreduce - Resource manager does not transit to active state from standby -

serialization - Convert Any type in scala to Array[Byte] and back -