0

このコードで問題が発生しています。データベースの「高度な」検索を作成しようとしています。2種類のデータ(映画と場所)を要求します。場所1は完璧に機能し、場所の近くにあるすべての映画館を表示します。しかし、映画の特定の名前を入力することでそうすることは可能ですか?

Location Controller:
if params[:allcinemas].checked?
  if params[:search].present?
    @locations = Location.near(params[:search], 10, :order => :distance)
    @title = "Search Results:"
  else
    @locations = Location.joins(:cinema).order("cinemas.name").all
    @title = "Locations of Cinemas"   
  end
elsif params[:allmovies].checked?
  if params[:search].present?
    @films = Film.near(params[:search], :order => :title)
  else
    @films = Film.find(:all, :order => "title") 
  end

これは、場所のShow.Html.erbです。

show.html.erb
<p>
 <%= text_field_tag :search, params[:search] %>
 <%= submit_tag "Search Nearby Cinemas", :name => nil %>
 <br><%= radio_button_tag 'allcinemas', 'cinemas', true %> Cinemas
 <br><%= radio_button_tag 'allmovies', 'movies' %> Movies
</p>
4

1 に答える 1

0

radio_button_tags は、次のような同じ名前にする必要があります。

<%= radio_button_tag 'radio_input', 'cinemas', true %> Cinemas
<%= radio_button_tag 'radio_input', 'movies' %> Movies

さて、あなたのコントローラーではradio_input.checked? 1 つの選択肢をデフォルトでオンにしているため、常に true が返されます。したがって、このチェックの代わりに:if params[:allcinemas].checked?

params[:radio_input] によって返される値を確認します。
if params[:radio_button] == 'cinemas'
#your logic to handle cinemas
else
#your logic for movies

それはあなたの問題を解決するはずです。

于 2012-05-24T08:42:57.687 に答える