Ror在db中查找记录并将其显示给用户

时间:2016-01-25 18:27:29

标签: ruby-on-rails

这是我的第一个应用程序。 我有主页:home.html.erb 我在那里组建。

  <%= form_for(@lead ,:html => {:class => 'check_form'}) do |f| %>

      <%= f.text_field :phone, placeholder: 'phone' %>
    <%= f.submit "Check car status", class: "btn btn-large btn-primary" %>
  <% end %>

背景故事:客户(我称他为Lead可以输入他的电话号码并检查他现在正在维修的汽车状态。)

现在,此视图home.html.erbstatic_pages_controller

提供
 class StaticPagesController < ApplicationController
  def home
   @lead = Lead.new()
  end

  def help
  end
  def about
  end
  def contact
  end
end

我还有LeadsController

class LeadsController < ApplicationController
*some code*

  def create
    @lead = Lead.new(lead_params)
    if @lead.save
      #sign_in @lead
      flash[:success] = "Request successfully created!"
      redirect_to @lead
    else
      render 'new'
    end
  end

* some code
end

当用户输入他的电话号码以查找具有相同电话号码的数据库中的潜在客户并向用户显示维修状态时,我想要做什么。

回到我的问题: 我知道如何通过电话找到导致Lead.find(params[:id]) 但是在哪里写这段代码?我需要通过电话找到铅,然后将其打印到屏幕上。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

  

当用户输入他的电话号码以查找潜在客户时,我想要做什么   具有相同电话号码的数据库并向用户显示修复状态。

目前,您的表单有错误的用途。这需要具有route请求的表单。我将通过声明下面的自定义get :check_lead_car_status, to: 'static_pages#check_lead_car_status', as: 'check_lead_car_status'

来实现这一目标
static_pages#check_lead_car_status

def check_lead_car_status @lead = Lead.find_by(phone: params[:phone] end

<%= form_tag check_lead_car_status_path, :method => :get do %>
  <%= text_field_tag :phone, placeholder: 'phone' %>
  <%= submit_tag "Check car status", class: "btn btn-large btn-primary" %>
<% end %>

并修改现有表格,如下所示

check_lead_car_status.html.erb

页面The Status of the Car is: <%= @lead.status %> ,代码如下

{{1}}

答案 1 :(得分:0)

您重定向到@lead,这意味着应该是主控制器中的显示路径。这意味着您需要将该逻辑放在Lead控制器中名为show的方法中

然后在您的视图(views/leads/show.html.erb)中,您可以访问该变量

编辑:

如果您尝试做的只是通过其他参数进行查询,那么您应该查看active record query interface。特别是第1.1.5节

Lead.find_by(phone: params[:phone])