1

私は希望する結果を検索するためにレールに取り組んでいます。座標と呼ばれるテーブルがあり、そのための検索フォームが必要ですmodel.rb

class Coordinates<ActiveRecord::Base
  attr_accessible :city , :latitude, :longitude
end

座標_コントローラー.rb

class CoordinatesController<ApplicationController
  def show
    @coordinates=Coordinates.where("city = ?", params[:search]).all
  end
end

index.html.erb

<%= form_tag({controller: "coordinates", action: "show"}, method: "get") do  %>
<%= label_tag(:coordinates,"search for:") %>
<%= text_field_tag(:show) %>
<%= submit_tag("search") %>
<% end %>

search.html.erb

<%= form_for @coordinates.search do |coordinates| %>
  <ul>
    <li><%= coordinates.latitude %></li>
    <li><%= coordinates.longitude %></li>
    <li><%= coordinates.longitude %></li>
  </ul>
<% end %>

しかし、私はこのエラーが発生しています:

[]:配列の未定義メソッド「検索」

.. 助けてください

4

2 に答える 2

2

まず、フォーム コードを次のように変更してみてくださいindex.html.erb

<%= form_tag({controller: "coordinates", action: "show"}, method: "get") do  %>
  <%= label_tag(:coordinates,"search for:") %>
  <%= text_field_tag(:show) %>
  <%= submit_tag("search") %>
<% end %>

に:

<%= form_tag({controller: "coordinates", action: "show"}, method: "get") do  %>
  <%= label_tag(:search,"search for:") %>
  <%= text_field_tag(:search) %>
  <%= submit_tag("Search") %>
<% end %>

これにより、params[:search] にテキスト フィールドの値が取り込まれます。現在、クエリを params[:show] として渡しています。

次に、検索結果ビューを次のように変更してみてください。

<% @coordinates.each do |coordinates| %>
  <ul>
    <li><%= coordinates.latitude %></li>
    <li><%= coordinates.longitude %></li>
    <li><%= coordinates.longitude %></li>
  </ul>
<% end %>

@coordinatesこれは、コントローラーによって返されたコレクションを反復処理します。

于 2013-07-02T10:19:13.450 に答える