Ruby 如何使这段代码更好?(sinatra和数据映射器)
我是新手,我正在使用datamapper和sinatra构建一个基本应用程序。我有一个设置页面,有几个不同设置的文本输入 查看此页面时,应从数据库中提取信息并填充输入框(如果有) 对于我的设置类,我有:name和:value 到目前为止,我的代码正在运行,如果名称不存在,可以创建一个设置,否则会更新它Ruby 如何使这段代码更好?(sinatra和数据映射器),ruby,sinatra,datamapper,Ruby,Sinatra,Datamapper,我是新手,我正在使用datamapper和sinatra构建一个基本应用程序。我有一个设置页面,有几个不同设置的文本输入 查看此页面时,应从数据库中提取信息并填充输入框(如果有) 对于我的设置类,我有:name和:value 到目前为止,我的代码正在运行,如果名称不存在,可以创建一个设置,否则会更新它 Setting.first_or_create(:name => "seed").update(:name => "seed", :value => params[:seed])
Setting.first_or_create(:name => "seed").update(:name => "seed", :value => params[:seed])
3个问题:
@seed = Setting.get(:name => "seed")
这显然不起作用。。。我需要的是获取params[:value]WHERE:name=>“seed”并使用它打印出来。我不知道怎么做@seed=Setting.first_或_create(:name=>“seed”)#获取并存储
#仅当存在时更新
@如果params[:seed],则更新(:name=>“seed”,:value=>params[:seed])。是否存在?
在将params[:seed]
存储回数据库之前,验证其值可能是明智的。所有设置是否一次保存(使用相同的方法)?多亏了Taryn,我才将它们全部保存下来,现在我正试图在ERB文件中调用它们,但我无法:/它们似乎都为零,即使它们保存在“testseed”的DBundefined方法“present”中:StringinRailspresent?
是Rails添加到Object
的一种方法(与基本对象类一样)。Rails中的每个类都应该首先响应(:present?
它与blank?
相反-检查是否添加了?最后(我时不时地打错字)。然后试试!参数[:seed]。空白?
我的错误。。。rails不应该在标签中:/i如何在常规ruby中检查它?如果失败,那么编写自己的:class对象;def空白?;self.nil?| |(self.response_to?(:empty?&!self.empty?);结束;现在怎么样!自身空白?;结束;结束代码>太棒了!感谢它的工作:)我应该把所有这些放在一个像defsave(attr)这样的方法中,这样我就可以避免同样的东西输入5次吗?就最佳实践而言,我不确定什么是“最佳”
@seed = Setting.first_or_create(:name => "seed") # fetch and store
# update only if there was one
@seed.update(:name => "seed", :value => params[:seed]) if params[:seed].present?
<!-- show the value in the page -->
<%= @seed.value %>