简体   繁体   English

在一个控制器中两个创建动作-Rails

[英]Two Create actions in one controller - Rails

Currently, I have a Subscribers controller that has a new , index and create action for subscribers. 当前,我有一个Subscribers控制器,该控制器具有一个newindex并为订户create动作。 The function is very basic right now. 该功能现在非常基本。 I also have a subscriber model that takes in all the regular info including phone_number . 我也有一个subscriber模型,其中包含所有常规信息,包括phone_number I want a new form that will simply take in the subscribers phone_number and add 1 to the visit integer for that particular subscriber I have set up on the subscriber model. 我想要一个新的表单,该表单将简单地接收订户phone_number并将1添加到我在订户模型上设置的特定订户的visit整数。 Here is my current code for clarity. 为了清楚起见,这是我当前的代码。 Is this possible to basically update the subscriber that typed in their number and add 1 to the visit integer? 是否有可能从根本上更新键入其号码的订户并向访问整数加1?

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

MODEL 模型

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

Of course it is. 当然是的。 I would suggest creating with the url of your action (visit). 我建议您使用操作的网址(访问)进行创建。

And then in your controller you just need to do 然后在您的控制器中,您只需要做

@subscriber.update_attribute(:visit, @subscriber.visit+1)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM