创建更新属性的视图表单 - Rails

时间:2016-05-30 18:25:54

标签: ruby-on-rails ruby

我目前有一个基本的控制器和模型,可以创建具有普通属性(名称,电子邮件,电话等)的订阅者,但我在订阅者上也有visit属性。所以我有一个用“new”动作渲染的表单,并使用create动作保存输入。 <<非常基本>>我想要实现的新功能是创建一个仅接收phone_number的新表单,当输入该号码时,它会更新订户上与该号码对应的访问属性。现在我正在努力尝试用一个控制器解决这个问题。我将展示我当前的控制器,希望这有助于提高清晰度。

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

正如您在访问操作中所看到的,我正在尝试实现此功能,但我不确定从何处开始?

1 个答案:

答案 0 :(得分: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 %>

因此,这将向visit动作发送参数,并且在递增后将呈现show方法。希望这可以帮助。如果有什么事,请告诉我。