I want to be able to have a link that when pressed updates one attribute based up a controller action. How would I be able to do this? Do I have to create a separate update route? I am new at this so please bear with me.
controller
def completed
 @meeting = Meeting.find(params[:id])
 if @meeting.day_of_meeting == @meeting.days
  @meeting.update_attribute(:day_of_meeting, '1')
  redirect_to :back
 else
  @meeting.increment!
  redirect_to :back
 end
end
model
def increment!
  update_attribute(:day_of_meeting, day_of_meeting + 1)
end
view
<%= link_to meetings_completed_path(@meeting), remote: true do %>
routes
resources :meetings do
  get 'meetings/completed'
end
                There are several issues with your code
Since you are updating a record you need to include method: :patch in your link and also you need to modify the routes file to include appropriate route.
In your routes file add
#routes.rb
resources :meetings do
  member do
    patch 'completed'
  end
end
In your view
<%= link_to "Mark as completed", completed_meeting_path(@meeting), remote: true, method: :patch  %>
Since you have a remote:true in your link so rails will try to render a javascript template and since you are not rendering a javascript template you will get a template missing error
In your controller
def completed
  @meeting = Meeting.find(params[:id])
  respond_to do |format|
    # if something ...
      # update meeting record and then render js template
      format.js {render :status => :ok} # it will render completed.js.erb inside 'app/views/meetings/' directory
    # else
      # something else
      format.js {render :action => "different_action"} # it will render different_action.js.erb inside 'app/views/meetings/' directory 
  end
end 
Now all you need to do is to write some basic javascript in the js templates to update the view.
Note : If you don't want to render anything simply use format.js { render :nothing => true }.
Also if you want to use redirect_to calls instead of rendering js template just remove remote: true form you link . 
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With