【问题标题】:Rails render lookup valueRails 渲染查找值
【发布时间】:2014-09-22 08:11:42
【问题描述】:

首先:使用文本字段输入某个 emp_no。 第二:我正在尝试通过 .

这是视图:

  <div class="field">
   <%= f.label :emp_no %><br />
   <%= f.text_field :emp_no%>
  </div>

  <div class="field">
   <%= f.label :emp_name %><br />
   <div><label><%= @emp_name %></label></div>
  </div>

这是我的控制器:

  before_filter :customer

  def customer
   @emp_name = where(Employee.params[:employee_code])
  end

非常感谢任何输入!谢谢!

【问题讨论】:

  • 您将需要使用 ajax 来发布 emp_no 并有一个返回名称的控制器操作
  • 我会检查那个。谢谢!

标签: ruby-on-rails render lookup


【解决方案1】:

我们在http://firststopcosmeticshop.co.uk 实现了类似的功能(尝试顶部的搜索)


搜索

简单地说,您要寻找的是一种功能,可以帮助您搜索您的数据。

这可以相对简单地实现,但你必须确保你的语法是正确的:

#config/routes.rb
resources :employees do
   get :search
end

#app/controllers/employees_controller.rb
class EmployeesController < ApplicationController
   layout: Proc.new {|controller| controller.request.xhr? ? false : "application" }

   def search
      @emp_names = Employee.where code: params[:employee_code]
   end
end

#app/views/employees/search.html.erb
<% @emp_names.each do |employee| %>
  <%= employee.name %>
<% end %>

此设置将使您能够加载 search 项目如果您想显示它们,让您既可以使用 ajax(详情如下),或者只是简单HTML / HTTP


Ajax

如果您想使用 Ajax 来提供“实时”结果,您需要使用以下详细信息:

#app/assets/javascripts/application.js
$(document).on("ajax:success", "form", function(status, data, xhr){
    $(this).append(data);
});

应该在前端(请求)页面的任何位置呈现结果。诀窍在于控制器对layout 的断言取决于接收到的请求类型(HTTP 或 XHR)


表格

最后,您的表单 需要反映您希望定义的功能。目前,您没有任何方法可以将请求发送到您的 emp_names 方法,因此您需要创建一种更好的方法来管理它:

#view
<%= form_tag employees_search_path, remote: true do %>
   <%= text_field_tag :input %>
   <%= submit_tag %>
<% end %>

当然,表单可能会发生很大变化,但这基本上意味着您将向您的employees_search_path 发送一个简单的请求,然后您就可以在控制器中管理响应;正常情况下,或者使用 Ajax

【讨论】:

  • 感谢您的详细解释。我刚从 ruby​​ on rails 开始,需要寻找不同的方式在其中做事。再次感谢! :)
  • 没问题!请让我了解它是否对您有帮助!
猜你喜欢
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多