【发布时间】:2014-10-26 07:16:29
【问题描述】:
我从 Rails 开始,并尝试合并一个简单的搜索,但目前为止。 该字符串看起来不错,但似乎没有执行到结果页面。当我尝试包含 restful 资源时,似乎存在许多问题 nil 方法、缺少操作或路由失败。
我希望在一个页面上搜索(搜索)并将结果填充到另一个结果页面(地图)。 两者都在 PagesController 之下,并且是其中的操作。
该表称为 towns,用户条目和 CRUD 区域由 TownsController 控制,并与设计 User_id 关联。
然后是具有搜索、地图、关于、联系页面的页面控制器。
class PagesController < ApplicationController
def index
end
def search
@towns = Town.search(params[:search])
end
def page
end
def map
end
end
--------------------------
class Town < ActiveRecord::Base
geocoded_by :name
after_validation :geocode
belongs_to :user
def self.search(search)
if search
search_condition = "%" + search + "%"
where(['townName LIKE ? OR townDescription LIKE ?', search_condition, search_condition])
end
end
-------------------------
views
search.html.erb
<div class="form-group">
<%= form_tag(pages_map_path , method: "get") do %>
<p>
<%= text_field_tag :search, params[:search], class: 'search-text' %>
<%= submit_tag "Search", :name => nil, class: 'btn btn-primary btn-lg'%>
</p>
<% end %>
results --> to map page
map.html.erb
<ul>
<% @towns.each do |town| %>
<li><%= link_to town.name,
:action => 'map', :id => town.id %></li>
<% end %>
</ul>
---------------------------
routes
Rails.application.routes.draw do
devise_for :users
get "pages/search"
get "pages/index"
get "pages/contact"
get "pages/about"
get "pages/map"
get "pages/page"
match ':controller(/:action(/:id))', :via => [:get, :post]
root 'pages#search'
end
【问题讨论】:
标签: postgresql ruby-on-rails-4