I receive this error with my Book form in rails:
First argument in form cannot contain nil or be empty
Form
<%= form_for #book, html: { multipart: true } do |f| %>
<% if #book.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(#book.errors.count, "error") %> prohibited this book from being saved:</h2>
<ul>
<% #book.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :title %><br>
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :author %><br>
<%= f.text_field :author %>
</div>
<div class="field">
<%= f.label :language %><br>
<%= f.text_field :language %>
</div>
<div class="field">
<%= f.label :year %><br>
<%= f.text_field :year %>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_area :description %>
</div>
<div class="field">
<%= f.label :total_pages %><br>
<%= f.text_field :total_pages %>
</div>
<div class="field">
<%= f.label :rating %><br>
<%= f.text_field :rating %>
</div>
<div class="field">
<%= f.label :image %><br>
<%= f.file_field :image %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Controller
class BooksController < ApplicationController
before_action :set_book, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!, except: [:index, :show]
def search
if params[:search].present?
#books = Book.search(params[:search])
else
#books = Book.all
end
end
def index
#books = Book.all
end
def show
#reviews = Review.where(book_id: #book.id).order("created_at DESC")
if #reviews.blank?
#avg_review = 0
else
#avg_review = #reviews.average(:rating).round(2)
end
end
end
def new
#book = current_user.books.build
end
def edit
end
def create
#book = current_user.books.build(book_params)
respond_to do |format|
if #book.save
format.html { redirect_to #book, notice: 'Book was successfully created.' }
format.json { render :show, status: :created, location: #book }
else
format.html { render :new }
format.json { render json: #book.errors, status: :unprocessable_entity }
end
end
end
def update
respond_to do |format|
if #book.update(book_params)
format.html { redirect_to #book, notice: 'Book was successfully updated.' }
format.json { render :show, status: :ok, location: #book }
else
format.html { render :edit }
format.json { render json: #book.errors, status: :unprocessable_entity }
end
end
end
def destroy
#book.destroy
respond_to do |format|
format.html { redirect_to books_url, notice: 'Book was successfully destroyed.' }
format.json { head :no_content }
end
end
private
def set_book
#book = Book.find(params[:id])
end
def book_params
params.require(:book).permit(:title, :author, :language, :year, :description, :total_pages, :rating, :image)
end
I got related errors, but none of the solutions seems to fit my particular issue. Any clues to what could be causing this?
You're getting the error because #book is nil.
Make sure that you have initialized #book using #book = Book.new in the corresponding controller action so that #book is available to the view containing the form.
initialized #book = Book.new in the controller action
Related
I try to integrate Paperclip to my Web App. The problem is, that the upload button is not working. I can choose a file, enter a title etc. but when i hit on upload nothing happens.
when i remove in the _form.html.erb file the
<%= form_for #video, url: videos_path, html: { multipart: true } do |form| %>
<%= form.file_field :image %>
<% end %>
the upload button is working again, but again, without the paperclip attachment.
Any ideas how to fix this?
_form.html.erb File
<div class="container">
<%= form_for(#video) do |f| %>
<% if #video.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(#video.errors.count, "error") %> prohibited this video from being saved:</h2>
<ul>
<% #video.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :jwPlayer %><br>
<%= f.text_field :jwPlayer %>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_area :description %>
</div>
<div class="field">
<%= f.label :title %><br>
<%= f.text_area :title %>
</div>
<%= form_for #video, url: videos_path, html: { multipart: true } do |form| %>
<%= form.file_field :image %>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
</div>
Video_controller
class VideosController < ApplicationController
before_action :set_video, only: [:show, :edit, :update, :destroy]
# GET /videos
# GET /videos.json
def index
#videos = Video.all
end
# GET /videos/1
# GET /videos/1.json
def show
end
# GET /videos/new
def new
#video = Video.new
end
# GET /videos/1/edit
def edit
end
# POST /videos
# POST /videos.json
def create
#video = Video.new(video_params)
respond_to do |format|
if #video.save
format.html { redirect_to #video, notice: 'Video was successfully created.' }
format.json { render :show, status: :created, location: #video }
else
format.html { render :new }
format.json { render json: #video.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /videos/1
# PATCH/PUT /videos/1.json
def update
respond_to do |format|
if #video.update(video_params)
format.html { redirect_to #video, notice: 'Video was successfully updated.' }
format.json { render :show, status: :ok, location: #video }
else
format.html { render :edit }
format.json { render json: #video.errors, status: :unprocessable_entity }
end
end
end
# DELETE /videos/1
# DELETE /videos/1.json
def destroy
#video.destroy
respond_to do |format|
format.html { redirect_to videos_url, notice: 'Video was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_video
#video = Video.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def video_params
params.require(:video).permit(:jwPlayer, :description, :title, :image)
end
end
Video.rb
class Video < ActiveRecord::Base
has_attached_file :image, styles: { medium: "300x300>", thumb: "100x100>" }
validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/
end
You have to change your code.
Add this to your code:
<%= f.file_field :image %>
instead of this:
<%= form_for #video, url: videos_path, html: { multipart: true } do |form| %>
<%= form.file_field :image %>
<% end %>
I have a landlord and landlord_address model. When a new landlord_address is created, the landlord_id is saved to the table. For some reason, when I edit a landlord_address the landlord_id is changed to NULL.
Models:
class Landlord < ActiveRecord::Base
has_many :landlord_addresses, dependent: :destroy
belongs_to :listing_agent, class_name: 'Agent'
end
class LandlordAddress < ActiveRecord::Base
belongs_to :landlord
has_many :landlord_companies, dependent: :destroy
end
Landlord Addresses Controller:
module Matrix
class LandlordAddressesController < ApplicationController
before_action :set_landlord_address, only: [:show, :edit, :update, :destroy]
# GET /landlord_addresses
# GET /landlord_addresses.json
def index
#landlord = Landlord.find(params[:landlord_id])
#landlord_addresses = #landlord.landlord_addresses.order(address_line_one: :asc)
end
# GET /landlord_addresses/1
# GET /landlord_addresses/1.json
def show
end
# GET /landlord_addresses/new
def new
#landlord_address = LandlordAddress.new
#landlord = Landlord.find(params[:landlord_id])
end
# GET /landlord_addresses/1/edit
def edit
end
# POST /landlord_addresses
# POST /landlord_addresses.json
def create
#landlord_address = LandlordAddress.new(landlord_address_params)
respond_to do |format|
if #landlord_address.save
format.html { redirect_to matrix_landlord_landlord_addresses_path, notice: 'Landlord address was successfully created.' }
format.json { render :show, status: :created, location: #landlord_address }
else
format.html { render :new }
format.json { render json: #landlord_address.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /landlord_addresses/1
# PATCH/PUT /landlord_addresses/1.json
def update
respond_to do |format|
if #landlord_address.update(landlord_address_params)
format.html { redirect_to matrix_landlord_landlord_addresses_path, notice: 'Landlord address was successfully updated.' }
format.json { render :show, status: :ok, location: #landlord_address }
else
format.html { render :edit }
format.json { render json: #landlord_address.errors, status: :unprocessable_entity }
end
end
end
# DELETE /landlord_addresses/1
# DELETE /landlord_addresses/1.json
def destroy
#landlord_address.destroy
respond_to do |format|
format.html { redirect_to landlord_addresses_url, notice: 'Landlord address was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_landlord_address
#landlord_address = LandlordAddress.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def landlord_address_params
params.require(:landlord_address).permit(:address_line_one, :address_line_two, :city, :state, :zip, :super_name, :super_number, :landlord_id, :latitude, :longitude)
end
end
end
Landlord Addresses _form:
<div class="feedback-container">
<%= form_for [:matrix, #landlord_address] do |f| %>
<% if #landlord_address.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(#landlord_address.errors.count, "error") %> prohibited this landlord_address from being saved:</h2>
<ul>
<% #landlord_address.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
/ul>
</div>
<% end %>
<div id="form-map"></div>
<input id="pac-input" class="controls" type="text"
placeholder="Enter a location">
<div id="type-selector" class="controls">
<input type="radio" name="type" id="changetype-all" checked="checked">
<label for="changetype-all">All</label>
</div>
<div class="field">
<%= f.label :address, class: "general-text-label" %>
<%= f.text_field :address_line_one, class: "general-text-field map-autocomplete-address" %>
<%= f.hidden_field :latitude, class: "map-autocomplete-latitude" %>
<%= f.hidden_field :longitude, class: "map-autocomplete-longitude" %>
</div>
<div class="field">
<%= f.label :super_name, class: "general-text-label" %><br>
<%= f.text_field :super_name, class: "general-text-field" %>
</div>
<div class="field">
<%= f.label :super_number, class: "general-text-label" %><br>
<%= f.text_field :super_number, class: "general-text-field" %>
</div>
<div class="field">
<%= f.hidden_field :landlord_id, :value => params[:landlord_id] %>
</div><br>
<div class="actions">
<%= f.submit "Submit", class: "btn btn-black btn-4x" %>
</div>
<% end %>
</div>
Routes:
namespace :matrix do
resources :landlords, shallow: true do
resources :landlord_addresses do
resources :landlord_companies
end
end
end
New Error:
This part
<%= f.hidden_field :landlord_id, :value => params[:landlord_id] %>
will be your issue. When params[:landlord_id] is nil your record will be updated to null.
You should change it to
<%= f.hidden_field :landlord_id, :value => #landlord_address.landlord_id || #landlord.id %>
or some thing else.
Your route is nested, You dnt need to assign in hidden field. You can do it in the controller, passing params.
Form:
Remove hidden field, we are assigning it in the controller!
<div class="field">
<%= f.hidden_field :landlord_id, :value => params[:landlord_id] %>
</div><br>
Controller:
# POST /landlord_addresses
# POST /landlord_addresses.json
def create
#landlord_address = LandlordAddress.new(landlord_address_params)
# add this line here!
#landlord_address.landlord_id = params[:landlord_id]
respond_to do |format|
if #landlord_address.save
format.html { redirect_to matrix_landlord_landlord_addresses_path, notice: 'Landlord address was successfully created.' }
format.json { render :show, status: :created, location: #landlord_address }
else
format.html { render :new }
format.json { render json: #landlord_address.errors, status: :unprocessable_entity }
end
end
end
private
#ALSO REMOVE `:landlord_id` from
def landlord_address_params
params.require(:landlord_address).permit(:address_line_one, :address_line_two, :city, :state, :zip, :super_name, :super_number, :latitude, :longitude)
end
I have a weird problem with "nested_form" in Rails. I made a model "evaluate" associated to other model "proyect", but when I try to show theres fields, on "proyects" form, just show fields from "proyects".
Here is my code:
Models:
proyect.erb
class Proyect < ActiveRecord::Base
belongs_to :user
has_many :vercions #I know is versions
has_many :evaluates #I know is evaluators
accepts_nested_attributes_for :evaluates, allow_destroy: true
validates :titulo,:presence => true,
:length => { :minimum => 3 }
validates :descripcion,:presence => true,
:length => { :minimum => 3 }
end
evaluate.erb
class Evaluate < ActiveRecord::Base
belongs_to :proyect
has_and_belongs_to_many :users
end
Controller
proyects_controller.erb
class ProyectsController < ApplicationController
before_action :set_proyect, only: [:show, :edit, :update, :destroy]
# GET /proyects
# GET /proyects.json
def index
if current_user.tipo == 'i'
#proyects = Proyect.where(:user_id => current_user.id)
else
#proyects = #Proyect.where(:id_user => current_user.id)
Proyect.all
end
end
# GET /proyects/1
# GET /proyects/1.json
def show
#vercion = Vercion.new
end
# GET /proyects/new
def new
#proyect = Proyect.new
#proyect.evaluates.build
end
# GET /proyects/1/edit
def edit
end
# POST /proyects
# POST /proyects.json
def create
#proyect = current_user.proyects.new(proyect_params)
respond_to do |format|
if #proyect.save
format.html { redirect_to #proyect, notice: 'Proyecto creado!.' }
format.json { render :show, status: :created, location: #proyect }
else
format.html { render :new }
format.json { render json: #proyect.errors, status: :unprocessable_entity }
end
# Llamamos al ActionMailer que creamos
Usermailer.bienvenido_email(current_user,#proyect).deliver
end
end
# PATCH/PUT /proyects/1
# PATCH/PUT /proyects/1.json
def update
respond_to do |format|
if #proyect.update(proyect_params)
format.html { redirect_to #proyect, notice: 'Proyect was successfully updated.' }
format.json { render :show, status: :ok, location: #proyect }
else
format.html { render :edit }
format.json { render json: #proyect.errors, status: :unprocessable_entity }
end
end
end
# DELETE /proyects/1
# DELETE /proyects/1.json
def destroy
#proyect.destroy
respond_to do |format|
format.html { redirect_to proyects_url, notice: 'Proyect was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_proyect
#proyect = Proyect.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def proyect_params
params.require(:proyect).permit(
:titulo, :descripcion,:evaluador, :id_user, :codigo, :user_assign,evaluates_attributes: [:id,:nombre, :prioridad, :_destroy, user_ids: [] ])
end
end
Views
_form.html.erb (Proyects)
<%= nested_form_for(#proyect) do |f| %>
<% if #proyect.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(#proyect.errors.count, "error") %> prohibited this proyect from being saved:</h2>
<ul>
<% #proyect.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :titulo %><br>
<%= f.text_field :titulo %>
</div>
<div class="field">
<%= f.label :descripcion %><br>
<%= f.text_area :descripcion %>
</div>
<div class="field">
<%= f.hidden_field :id_user, :value => current_user.id %>
</div>
<!--Aqui aƱadi algo-->
<fieldset id="evaluates">
<%= f.fields_for :evaluates do |evaluates_form| %>
<div class="field">
<%= evaluates_form.label :status %><br>
<%= evaluates_form.text_field :status %>
</div>
<%= evaluates_form.link_to_remove "Eliminar esta tarea" %>
<% end %>
<p><%= f.link_to_add "Agregar una tarea", :evaluates %></p>
</fieldset>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
_evaluate_fields.html.erb
<div class="field">
<%= f.label :status, 'Nombre de la tarea' %><br>
<%= f.text_field :status %>
</div>
<div class="field">
<%= f.collection_check_boxes :user_ids, User.where(:tipo => 'e'), :id, :cedula %>
</div>
<%= f.link_to_remove "Eliminar Evaluador" %>
I want people to define a course name before writing a spotlight. I did this by adding following code to the spotlight model
class Spotlight < ActiveRecord::Base
validates :name, presence: true
end
Before adding the validation I could write spotlights without any name. If I try that now I get following error message:
undefined method `map' for nil:NilClass
Extracted source (around line #29):
</div>
<div class="field">
<%= f.label :name, "Opleiding" %><br>
<%= f.collection_select(:name, #colli, :name, :name, {prompt: 'Selecteer een opleiding'}, {id: 'collis_select'}) %>
</div>
<div class="field">
<%= f.label :teaser %><br>
What is going on here? The collection select is the base for an ajax call I do to fill up other fields.
View
<%= form_for(#spotlight) do |f| %>
<% if #spotlight.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(#spotlight.errors.count, "error") %> prohibited this spotlight from being saved:</h2>
<ul>
<% #spotlight.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :spotlight, "In de kijker" %><br>
<%= f.check_box :spotlight %>
</div>
<div class="field">
<%= f.label :start, "Start in de kijker" %><br>
<%= f.datetime_select :start %>
</div>
<div class="field">
ruby-on-rails
<%= f.label :stop, "Stop in de kijker" %><br>
<%= f.datetime_select :stop %>
</div>
<div class="field">
<%= f.label :name, "Opleiding" %><br>
<%= f.collection_select(:name, #colli, :name, :name, {prompt: 'Selecteer een opleiding'}, {id: 'collis_select'}) %>
</div>
<div class="field">
<%= f.label :teaser %><br>
<%= f.text_area :teaser, size: "85x10", id: 'teasers_select' %>
</div>
<div class="field">
<%= f.label :coursedate, "Startdatum opleiding" %><br>
<%= f.datetime_select :coursedate, id: 'startdate_select' %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
<script>
$(document).ready(function() {
$('#collis_select').change(function() {
$.ajax({
url: "<%= update_teasers_path %>",
data: {
name : $('#collis_select').val()
},
dataType: "script"
});
});
});
</script>
Update teaser view
$('#teasers_select').val("<%= escape_javascript(#teaser) %>");
Controller
class SpotlightsController < ApplicationController
before_action :set_spotlight, only: [:show, :edit, :update, :destroy]
before_action :load_colli, only: [:new, :edit]
def index
#spotlights = Spotlight.all.order('spotlight DESC, start, stop')
end
def show
end
def new
#spotlight = Spotlight.new
end
def edit
end
def create
#spotlight = Spotlight.new(spotlight_params)
respond_to do |format|
if #spotlight.save
format.html { redirect_to #spotlight, notice: 'Spotlight was successfully created.' }
format.json { render action: 'show', status: :created, location: #spotlight }
else
format.html { render action: 'new' }
format.json { render json: #spotlight.errors, status: :unprocessable_entity }
end
end
end
def update
respond_to do |format|
if #spotlight.update(spotlight_params)
format.html { redirect_to #spotlight, notice: 'Spotlight was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: #spotlight.errors, status: :unprocessable_entity }
end
end
end
def update_teasers
# updates artists and songs based on genre selected
colli = Colli.where(name: params[:name])
# map to name and id for use in our options_for_select
#teaser = colli.first.teaser
end
def destroy
#spotlight.destroy
respond_to do |format|
format.html { redirect_to spotlights_url }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_spotlight
#spotlight = Spotlight.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def spotlight_params
params.require(:spotlight).permit(:spotlight, :start, :stop, :name, :teaser, :coursedate)
end
def load_colli
#colli = Colli.select(:name).distinct.order('name')
end
end
Can somebody explain what seems to be the problem? What is the "map" function the error is referring to?
It looks like your #colli object is nil.
<%= f.collection_select(:name, #colli, :name, :name, {prompt: 'Selecteer een opleiding'}, {id: 'collis_select'}) %>
This has nothing to do with the presence validation. Make sure the collection_select method is receiving a #colli instance variable. Right now it's receiving nil.
The map function is an instance method in the class Array. It receives a block, iterates over an array, and returns a new array with elements returned from the block. You can't call map on nil; you will get the error you are seeing above.
You can check if #colli is nil by raising it:
def load_colli
#colli = Colli.select(:name).distinct.order('name')
raise #colli.to_s
end
If you change the update_teasers function to:
def update_teasers
# updates artists and songs based on genre selected
#colli = Colli.where(name: params[:name])
# map to name and id for use in our options_for_select
#teaser = #colli.first.teaser
end
that should fix the issue. This isn't an issue with the presence validation.
EDIT:Sorry, that didn't work. Next I would try to set the #colli variable in the create function as follows. That way the variable is still set when it renders the new action upon a failed save.
def create
#spotlight = Spotlight.new(spotlight_params)
#colli = Colli.where(name: params[:name])
respond_to do |format|
if #spotlight.save
format.html { redirect_to #spotlight, notice: 'Spotlight was successfully created.' }
format.json { render action: 'show', status: :created, location: #spotlight }
else
format.html { render action: 'new' }
format.json { render json: #spotlight.errors, status: :unprocessable_entity }
end
end
end
Not sure why I seem to be getting this error as I have the appropriate amount of ends. The app was working - and then I installed devise and it went to hell. I un-installed devise to go back to the working version but now I seem to be getting the error shown below.
Error msg
SyntaxError in SongsController#index
/Users/user/Sites/leap2/leap2/app/controllers/songs_controller.rb:13: syntax error, unexpected end-of-input, expecting keyword_end
Songs_controller.rb
class SongsController < ApplicationController
before_action :set_song, only: [:show, :edit, :update, :destroy]
def index
#songs = Song.all
end
def new
#song = Song.new
end
def show
end
def edit
end
def create
#song = Song.new(song_params)
respond_to do |format|
if #song.save
format.html { redirect_to #song, notice: 'Song was added successully'}
format.json {render action: 'show', status: :created, location: #song}
else
format.html { render action: 'new' }
format.json { render json: #song.errors, status: :unprocessable_entity }
end
end
end
def update
respond_to do |format|
if #song.update(song_params)
format.html {redirect_to #song, notice: 'Song was successfully updated.' }
format.json {head :no_content }
else
format.html {render action: 'edit' }
format.json {render json: #song.errors, status: :unprocessible_entity }
end
end
end
def destroy
#song.destroy
respond_to do |format|
format.html { redirect_to songs_url }
format.json { head :no_content }
end
end
private
def set_song
#song = Song.find(params[:id])
end
def song_params
params.require(:song).permit(:title, :artist, :bio, :track)
end
end
show.html.erb
<p id="notice"><%= notice %>
<p>
<strong>Title:</strong>
<%= #song.title %>
</p>
<p>
<strong>Bio:</strong>
<%= #song.bio %>
</p>
<p>
<strong>Audio:</strong>
<%= audio_tag (#song.track.url), controls: "controls" %>
</p>
<br /><br />
<%= link_to 'Edit', edit_song_path(#song), class: "button small secondary"%>
<%= link_to 'Back', songs_path, class: "button small secondary" %>
_form.html_erb
<%= form_for #song, :html => { :multipart => true } do |f| %>
<% if #song.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(#song.errors.count, "error") %> prohibited this song from being saved:</h2>
<ul>
<% #song.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="row">
<div class="large-6 columns">
<div class="field">
<%= f.label :title %>
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :bio %>
<%= f.text_area :bio %>
</div>
<p>
<%= f.file_field :track%>
</p>
<div class="actions">
<%= f.submit value: "Upload" %>
</div>
<% end %>
</div>
<div class="large-6 columns"><h3>Submit your own song or a personal favourite and watch it climb the charts! </h3>
</div>
</div>
in application_controller.rb you had one extra end.
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
def authorize
redirect_to new_user_session_path, notice: "You have to be logged in to submit."
if current_user.nil?
end
end
end