2016-05-30 3 views
0

В настоящее время у меня есть контроллер Subscribers, который имеет действие new, index и create для подписчиков. Функция очень проста прямо сейчас. У меня также есть модель subscriber, которая берет всю регулярную информацию, включая phone_number. Я хочу новую форму, которая просто возьмет в качестве подписчика phone_number и добавит 1 к целому числу visit для этого конкретного абонента, который я установил на модели абонента. Вот мой код для ясности. Возможно ли это, в основном, обновить подписчика, набравшего их номер, и добавить 1 в число целых чисел?Два Создайте действия в одном контроллере - Rails

CONTROLLER

class SubscribersController < ApplicationController 
def index 
@subscriber = Subscriber.all 
end 

def new 
    @subscriber = Subscriber.new 
end 

def create 
    @subscriber = Subscriber.create(subscriber_params) 
    if @subscriber.save 
    flash[:success] = "Subscriber Has Been successfully Created" 
    redirect_to new_subscriber_path(:subscriber) 
    else 
    render "new" 
    end 
end 

def visit 
    @subscriber = Subscriber.find_by_phone_number(params[:phone_number]) 
if @subscriber 
    @subscriber.visit += 1 
    redirect_to subscribers_visits_new_path(:subscriber) 
else 
    render "new" 
end 
end 

МОДЕЛЬ

class Subscriber < ActiveRecord::Base 
validates :first_name, presence: true 
validates :last_name, presence: true 
validates :email, presence: true 
validates :phone_number, presence: true 

def date_joined 
    created_at.strftime("%-m/%-d/%-y") 
end 

def expiration_date 
    (created_at + 1.year).strftime("%-m/%-d/%-y") 
end 
end 
+0

Есть ли никакой другой информации о визите, что вам нужно отслеживать? Это просто счетчик? Мне кажется, что посещение должно быть отдельным ресурсом с отдельным контроллером/моделью. – heartlandcoder

ответ

1

Конечно это. Я бы предложил создать URL-адрес вашего действия (посещение).

И тогда в вашем контроллере нужно просто сделать

@subscriber.update_attribute(:visit, @subscriber.visit+1) 
Смежные вопросы