和其他许多人一样,我是Rails的新手并且有一个问题。我正在为一个小型分析实验室开发样品跟踪器。我希望用户提交包含许多样本的批次。我希望首页成为批量提交的简单网关。我的总体计划是:
我的感觉是主页应该将某种参数传递给批处理控制器,批处理控制器然后迭代地构建样本,而模型具有迭代地为视图构建表单元素的方法。这个想法是否正确?我怎样才能传递与任何模型或控制器没有直接关系的参数?我可以找到任何类似的问题,但是如果有人可以将我链接到解决类似问题的解决方案或Railscast,我会非常感激!
答案 0 :(得分:2)
无需使用模型支持表单。对于你的观点,你只需要这样的例子(在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个样本,否则此代码相当强大
答案 1 :(得分:0)