【发布时间】:2017-11-03 04:34:53
【问题描述】:
我在我的 Rails 应用程序中实现了一个简单的搜索。每当我点击搜索时,它不会返回任何结果,但保持不变。
我有一个型号Contract,下面是代码
def self.search(search)
where(["contract_name LIKE ?", "%#{search}%"])
end
在Contract 控制器中,
def index
@user = User.find_by_id(params[:user_id])
@search = params[:search]
if @search
@contracts = @current_user.contracts.search(@search).order("created_at DESC")
else
@contracts = @current_user.contracts.order('created_at DESC')
end
end
在Contract,index.html.erb,
<form action="<%= contracts_path%>" method ="get">
<div class="col-lg-6">
<div class="input-group">
<%= text_field_tag :search, params[:search], class: 'form-control'%>
<span class="input-group-btn">
<%= submit_tag "Search", class: "btn btn-success" %>
</span>
</div>
</div>
</form>
<% if @current_user.contracts.present? %>
<% @current_user.contracts.each do |f| %>
<% if @current_user.contracts.present? %>
<% @current_user.contracts.each do |f| %>
<tr>
<td><%= f.contract_name %></td>
<td><%= f.contract_email %></td>
<td><%= f.contract_type %></td>
<td><label class="label label-success" ><%= f.contract_relationship %></label></td>
<% end %>
<% else %>
<td colspan="5"><center>There are currently no contracts yet.</center></td>
<% end %>
</tr>
我有另一个运行良好的 Rails 应用程序,我遵循与搜索代码完全相同的方式,但它在这个 Rails 应用程序中不起作用。我还注意到另一个项目的日志返回了这个,效果很好。
SELECT "coworkings".* FROM "coworkings" WHERE "coworkings"."partner_id" = ? AND (title LIKE '%myspace%') ORDER BY created_at DESC [["partner_id", 20]]
虽然这个项目只返回这个,但另一半似乎不见了,奇怪
SELECT "contracts".* FROM "contracts" WHERE "contracts"."user_id" = ? [["user_id", 3]]
我遵循与另一个项目完全相同的方式,但它仍然无法在此应用程序中运行。我在这两个项目中都使用了SQLite3。如果您能指出我犯的错误,将不胜感激。
【问题讨论】:
标签: ruby-on-rails search