单轨按钮状态红宝石在轨道上

时间:2012-05-24 00:29:02

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 rubygems

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

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>

1 个答案:

答案 0 :(得分: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

这应该可以解决你的问题。