0

我对这段代码有一些问题。我正在尝试为我的数据库创建“高级”搜索。请求两种类型的数据(电影和位置)。一个位置完美无瑕,并显示了一个位置附近的所有电影院。但是是否可以通过输入电影的特定名称来做到这一点?

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 中?将始终返回 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 回答