Created
June 25, 2014 01:21
-
-
Save pam-/2255f1a98c1247760826 to your computer and use it in GitHub Desktop.
Error when I run specs: First argument in form cannot contain nil or be empty
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<% if current_user?(@user) %> | |
<%= render 'shared/error_messages', object: f.object %> | |
<div class="title-area"> | |
<%= f.text_field :title, placeholder: "Enter title..." %> | |
</div> | |
<div class="text-area"> | |
<%= f.text_area :content, placeholder: "Compose new post..." %> | |
</div> | |
<%= f.submit "Post", class: "small-button", id: "post" %> | |
<% end %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ExperiencesController < ApplicationController | |
before_action :signed_in_user, only: [:index, :create, :destroy] | |
def index | |
@experiences = Experience.paginate(page: params[:page], per_page: 10) | |
end | |
def show | |
@experience = Experience.find(params[:id]) | |
end | |
def create | |
@experience = current_user.experiences.build(experience_params) | |
if @experience.save | |
flash[:success] = "Post created!" | |
redirect_to @experience | |
else | |
flash.now[:error] = "Couldn't post!" | |
redirect_to current_user | |
end | |
end | |
def destroy | |
Experience.find(params[:id]).destroy | |
flash[:success] = "Successfully deleted!" | |
redirect_to current_user | |
end | |
private | |
def experience_params | |
params.require(:experience).permit(:content, :title) | |
end | |
def signed_in_user | |
unless signed_in? | |
store_location | |
redirect_to signin_url, notice: "Please sign in." #flash[:notice] | |
end | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module SessionsHelper | |
#chap 8.19 | |
def sign_in(user) | |
remember_token = User.new_remember_token | |
cookies.permanent[:remember_token] = remember_token | |
user.update_attribute(:remember_token, User.digest(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 | |
remember_token = User.digest(cookies[:remember_token]) | |
@current_user ||= User.find_by(remember_token: remember_token) | |
end | |
def current_user?(user) | |
user == current_user | |
end | |
def signed_in_user | |
unless signed_in? | |
store_location | |
redirect_to signin_url, notice: "Please sign in." #flash[:notice] | |
end | |
end | |
def sign_out | |
current_user.update_attribute(:remember_token, User.digest(User.new_remember_token)) | |
cookies.delete(:remember_token) | |
self.current_user = nil | |
end | |
def redirect_back_or(default) | |
redirect_to(session[:return_to] || default) | |
session.delete(:return_to) | |
end | |
def store_location | |
session[:return_to] = request.url if request.get? | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<% provide(:title, @user.name) %> | |
<div class="wrapper"> | |
<div class="left"> | |
<div id="username"><h1><%= link_to @user.name.upcase, @user %></h1></div> | |
<div id="sidebar"> | |
<ul> | |
<% if signed_in? && current_user?(@user) %> | |
<li><%= link_to 'Settings', edit_user_path(@user, current_user), class: "small-button" %></li> | |
<li> <%= link_to 'Browse', '#', class: "small-button" %> </li> | |
<li> <%= link_to 'Sign out', signout_path, method: 'delete', class: "small-button" %></li> | |
<% else %> | |
<li> <%= link_to 'Follow', '#', class: "small-button" %> </li> | |
<% end %> | |
</ul> | |
</div> | |
</div> | |
<div class="right"> | |
<div class="new-post"> | |
<%= form_for(@experience) do |f| %> | |
<%= render 'shared/experience_form', f: f %> | |
<% end %> | |
</div> | |
<div class="posts-wrapper"> | |
<% if @user.experiences.any? %> | |
<%= will_paginate @experiences %> | |
<ol> | |
<%= render @experiences %> | |
</ol> | |
<% end %> | |
</div> | |
</div> | |
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class UsersController < ApplicationController | |
before_action :signed_in_user, only: [:index, :edit, :update, :destroy] | |
before_action :correct_user, only: [:edit, :update] | |
before_action :admin_user, only: [:destroy] | |
def index | |
@users = User.paginate(page: params[:page], per_page: 10) | |
end | |
def show | |
@user = User.find(params[:id]) | |
@experience = current_user.experiences.build if signed_in? | |
@experiences = @user.experiences.paginate(page: params[:page], per_page: 10) | |
end | |
def new | |
@user = User.new | |
end | |
def create | |
@user = User.new(user_params) | |
if @user.save | |
redirect_to @user | |
flash[:success] = "Welcome! Happy venting!" | |
else | |
render 'new' | |
end | |
end | |
def edit | |
end | |
def update | |
@user = User.find(params[:id]) | |
if @user.update_attributes(user_params) | |
flash[:success] = "Successfully updated" | |
redirect_to @user | |
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, :password, :password_confirmation) #admin is not an option for security reasons | |
end | |
def correct_user | |
@user = User.find(params[:id]) | |
redirect_to(root_url) unless current_user?(@user) | |
end | |
end | |
def admin_user | |
redirect_to(root_url) if !current_user.admin? | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment