58 lines
1.2 KiB
Ruby
58 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'google/apis/sheets_v4'
|
|
require 'google/api_client/client_secrets'
|
|
class FormsController < ApplicationController
|
|
before_action :require_login, except: [:form]
|
|
layout 'submission', only: [:form]
|
|
|
|
def new
|
|
@form = current_user.forms.build(backend_name: 'google_sheets')
|
|
end
|
|
|
|
def show
|
|
@form = current_user.forms.find_by!(token: params[:id])
|
|
@submissions = @form.submissions
|
|
end
|
|
|
|
def index
|
|
@forms = current_user.forms
|
|
end
|
|
|
|
def create
|
|
@form = current_user.forms.build(form_params)
|
|
if @form.save
|
|
redirect_to form_url(@form)
|
|
else
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def edit
|
|
@form = current_user.forms.find_by!(token: params[:id])
|
|
end
|
|
|
|
def update
|
|
@form = current_user.forms.find_by!(token: params[:id])
|
|
if @form.update(form_params)
|
|
redirect_to form_url(@form)
|
|
else
|
|
render :edit
|
|
end
|
|
end
|
|
|
|
def setup
|
|
@form = current_user.forms.find_by!(token: params[:id])
|
|
end
|
|
|
|
def form
|
|
@form = Form.find_by!(token: params[:id])
|
|
end
|
|
|
|
private
|
|
|
|
def form_params
|
|
params.require(:form).permit(:title, :thank_you_url, :backend_name, :airtable_table, :airtable_api_key, :airtable_app_key)
|
|
end
|
|
end
|