Нет необходимости возвращать форму с моделью. На ваш взгляд, вы просто захотите что-то вроде этого примера (в Haml):
- form_tag new_batch_path, :method => "get" do
= label_tag(:sample_count, "Number of samples:")
= text_field_tag(:sample_count, 3)
= submit_tag("Get Started!")
А затем в вашем контроллере и в представлении new_batch вы можете просто сослаться на params[:sample_count]
- (params[:sample_count] || 5).to_i.times do |n| ...
Поскольку это не связано с моделью (и все равно ничего не сохраняется), вы не можете использовать проверки модели для проверки значения. Если вы хотите проверить, вы выполните проверку в контроллере пакетов - либо как before_filter, либо просто встроенный:
@sample_count = params[:sample_count].to_i
unless (1..10).include? @sample_count
flash[:error] = "A batch must contain between 1 and 10 samples."
redirect_to root_url
end
Обратите внимание, что nil.to_i
, "".to_i
и мусор, такой как "ajsdgsd".to_i
, все равны 0, поэтому, если вы не хотите, чтобы люди могли указывать 0 образцов, этот код достаточно надежен