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