如何使这段代码更好? (sinatra + datamapper)

时间:2011-12-08 09:11:43

标签: ruby sinatra datamapper

我是新手,我正在使用datamapper和sinatra来构建一个基本的应用程序。我有一个设置页面,其中包含几个不同设置的文本输入。

此页面在查看时,应从数据库中提取信息,并填写输入框(如果它们在那里)。

对于我的Setting类,我有:name和:value

截至目前,我的代码正常工作,如果名称不存在则允许创建设置,否则会更新。

Setting.first_or_create(:name => "seed").update(:name => "seed", :value => params[:seed])

3个问题:

  1. 如果输入为空白(显然是第一次之后),则用“”

  2. 覆盖它
  3. 如何缩短此代码?在一个'真正的'ruby程序中,我应该定义一个方法,所以不是那么冗余的代码吗?我有5个设置,所以我觉得有5行代码,只有少数不同的东西有点差。困难在于我将被迫命名=“”我所有的输入我正在使用的确切哈希。我不确定这是不是很差,或者我是否应该明确地做5次

  4. 为了'获取'数据显示它,我有这个:

    @seed  = Setting.get(:name => "seed")
    

    这显然不起作用......我需要的是获得params [:value] WHERE:name => “种子”和使用<%= @seed(???)%>把它打印出来。我不知道该怎么做

1 个答案:

答案 0 :(得分:1)

@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 %>