【问题标题】:Create view form that updates attributes - Rails创建更新属性的视图表单 - Rails
【发布时间】:2016-05-31 04:21:46
【问题描述】:

我目前有一个基本的控制器和模型,可以创建一个具有普通属性(姓名、电子邮件、电话等)的订阅者,但我在订阅者上也有一个 visit 属性。所以我有一个使用“新”操作呈现的表单,并使用创建操作保存输入。 > 我要实现的新功能是创建一个新表单,它只接受一个电话号码,当输入号码时,它会更新与该号码对应的订户的访问属性。现在我正在努力试图用一个控制器来解决这个问题。我将展示我当前的控制器,希望这有助于清晰。

控制器

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

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

【问题讨论】:

  • 所以基本上你想在访问时增加每个电话号码的访问次数?
  • 你为visit操作设置路由了吗?
  • 我还没有设置路线,但我更想知道如何设置控制器? @mlovic
  • 大部分看起来都不错。您可能希望规范化电话号码(删除空格、破折号等)。不确定subscribers_visits_new_path 应该代表什么路径。

标签: ruby-on-rails ruby


【解决方案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 操作,并在递增后呈现显示方法。希望这可以帮助。有什么事请告诉我。

【讨论】:

  • 太好了,你知道如何设置搜索页面吗?这就是我正在努力的部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
相关资源
最近更新 更多