Вы можете отправить параметр вашему контроллеру со значением радиокнопки, которое будет usa
или europe
Затем вы можете использовать метод send
для динамического вызова usa
или europe
на вашей Food
модели.
Например, вы отправили параметр food_name
из внешнего интерфейса на ваш контроллер.
Ваш код будет выглядеть примерно так
def index
@foods = Food.send(params[:food_type].to_sym)
end
Но будьте осторожны при непосредственном использовании параметров, поступающих от пользователя, поскольку это может повредить ваше приложение.
A Безопасный подход заключается в создании массива возможных типов пищи в вашем контроллере.
Примерно так:
SUPPORTED_FOOD_TYPES = ["usa", "europe"].freeze
Тогда в вашем контроллере вы сделаете это так
def index
@foods = Food.send(food_type.to_sym)
end
def food_type
if SUPPORTED_FOOD_TYPES.include? params[:food_type]
params[:food_type]
else
'all'
end
end
Ваш HTML-код будет выглядеть так:
<%= form_tag(foods_path, method: "get") do %>
<div class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-primary active">
<input type="radio" name="food_type" value="europe" id="europe" autocomplete="off" checked> Europe
</label>
<label class="btn btn-primary">
<input type="radio" name="food_type" value="usa" id="usa" autocomplete="off"> USA
</label>
</div>
<input type="submit" value="Apply">
<% end %>