我对此很陌生,我使用datamapper和sinatra构建基本应用程序。我有一个设置页面,有几个文本输入用于几种不同的设置。如何让这段代码更好? (sinatra + datamapper)
查看此页面时,应该从数据库中提取信息并填充输入框(如果它们在那里)。
对于我的设置Ⅰ类有:名称和:值
截至目前,我的代码工作,允许如果名称犯规已经存在要创建的设置,否则它更新它。
Setting.first_or_create(:name => "seed").update(:name => "seed", :value => params[:seed])
3个问题:
如果输入为空,它会覆盖它与 “”(第一次明显后)
我怎样才能缩短这个代码下来?在一个'真正的'ruby程序中,我应该定义一个方法,使其没有那么多冗余代码?我有5个设置,所以我觉得有5行代码,只有几个不同的东西是差的。困难在于,我将被迫命名=“”我的所有输入都是我正在使用的确切散列。林不知道如果多数民众赞成差实践与否,或者我是否应该只是做这一切明确的5倍
为了“得到”的数据,以显示它,我有这样的:
@seed = Setting.get(:name => "seed")
这显然不工作......我需要的是获得params [:value] WHERE:name =>“seed”并使用<%= @seed(???)%>将其打印出来。林不知道如何做到这一点
这可能是明智的验证'则params的值:种子]'存储它放回你的数据库之前。 – sarnold
是一次保存的所有设置(使用相同的方法)? – tokland
我得到了他们所有保存谢谢Taryn,现在我试图打电话给他们在ERB文件,我不能:/他们都显示为零,即使他们保存在DB – Tallboy