class TextShoutsController < ApplicationController
include Concerns::CreateShout
private
def build_content
TextShout.new(text_shout_parameters)
end
def text_shout_parameters
params.require(:text_shout).permit(:body)
end
end
class PhotoShoutsController < ApplicationController
include Concerns::CreateShout
private
def build_content
PhotoShout.new(photo_shout_parameters)
end
def photo_shout_parameters
params.require(:photo_shout).permit(:image)
end
end
#models / concerns / create_shout.rb
module Concerns
module CreateShout
extend ActiveSupport::Concern
def create
content = build_content
shout = current_user.shouts.build(content: content)
shout.save
if shout.save
redirect_to dashboard_path
else
flash.alert = "Could not shout"
redirect_to dashboard_path
end
end
end
end