2016-05-30 11 views
0

我目前有一个基本的控制器和模型,用于创建具有常规属性(名称,电子邮件,电话等等)的订阅服务器,但我在订阅服务器上也有一个visit属性。所以我有一个表单用“新”动作呈现,并用create动作保存输入。 < <非常基本>>我想要实现的新功能是创建一个只接收phone_number的新表单,并且在输入号码时更新与该号码对应的用户的访问属性。现在我正努力尝试用一个控制器来解决这个问题。我会显示我目前的控制器,并希望这将有助于澄清。创建更新属性的视图窗体 - Rails

控制器

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 
     @subscriber.save 
     redirect_to subscribers_visits_new_path(:subscriber) 
    else 
     render "new" 
    end 
    end 
end 

正如你可以在参观的行动我想实现这个功能看到,但我不知道从哪里走?

+0

所以基本上你想增加访问时每个电话号码的访问计数? – Kumar

+0

您是否设置了“visit”行为的路线? – mlovic

+0

我还没有设置路线,但我更想知道如何设置控制器? @mlovic – Bitwise

回答

1

我想你的search页面有一个表单,你可以输入你要搜索的号码。并且请求进入visit操作,您将在此处将访问计数加1,然后显示数字(订户)的详细信息。

def visit 
    #Comes request from search action 
    @subscriber = Subscriber.find_by_phone_number(params[:phone_number]) 
    if @subscriber 
    @subscriber.visit += 1 
    @subscriber.save 
    redirect_to subscriber_path(@subscriber) 
    #It will show the details 
    else 
    flash[:alert] = "Didn't find with that number. Search again." 
    render :action => :search 
    end 
end 

更新:

搜索逻辑

def search 
    #will render search.html.erb by convention 
end 

内search.html.erb

<%= form_tag({controller: "subscribers", action: "visit"}, method: "get") do %> 
    <%= text_field_tag :phone_number %> 
    <%= submit_tag "Submit" %> 
<% end %> 

因此,这将发送到PARAMS行动visit,并经过增量值它会渲染展示方法。希望这可以帮助。让我知道是否有任何东西。

+0

这是完美的,你知道如何设置搜索页面吗?这是我正在努力的部分 – Bitwise