Letting the users edit cases
Creating and deleting content is not enough. Let's give our users the possibility to modify it themselves. In this section we will implement the edit functionality.
Adding an Edit button
app/views/cases/index.html.erb and below the
<%=link_to("Delete", case_path(c), method: :delete) %> add the line:
<%=link_to("Edit", edit_case_path(c)) %>
Having changed the view, it's time to do this in the controller.
app/controllers/cases_controller.rb and add the lines:
def edit @case = Case.find(params[:id]) end
What will the user see when they decide to edit the content? Let's make a view for that.
app/views/cases and create a new file called
edit.html.erb. Type the following lines into the newly created
<h1> Edit Case</h1> <%= form_for @case do |form| %> <%= form.text_field :image_link %> <%= form.submit %> <% end %>
Add the update route in your cases controller:
def update @case = Case.find(params[:id]) if @case.update_attributes(case_params) redirect_to cases_path else render 'edit' end end
Adding the logout link
Our users love us, they like creating, deleting and updating cases. While we'd like them to stay permanently on the website, they may want to be able to quit the app.
So let's give them a log out link.
This is easy – put the following code in your
index.html.erb, below the
<%=link_to("Create a new case", new_case_path) %> line:
<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>
Devise knows how to handle the rest, so our work is done.
Check it out!