1

TL;更新博士:这是一个缺失的 attr_accessible。

我刚开始使用backbone.js,我正在尝试将Ryan Bates 的抽奖器扩展为待办事项列表。

现在,我正试图在项目“完成”时保存它。为了确保它位于代码的工作分支中,我将@set 与我知道正在工作的@set 一起放入。

win: ->
    @set(winner: true)
    @set(completed: true)
    @save()

“已完成”属性显示为 true,但当我重置页面时又返回 false。“赢家”属性保持不变。

这是我的视图代码(.jst.echo 格式):

<span class="entry">
<% if @entry.get('completed'): %>
  <input class='is-done' type='checkbox'  checked />
<% else: %>
  <input class='is-done' type='checkbox'  />
<% end %>
<%= @entry.get('name') %>
<%= @entry.score() %>

<% if @entry.get('winner'): %>
  <span class="winner">WINNER</span>
<% end %>
</span>

这是我的 Rails 数据库架构:

create_table "entries", :force => true do |t|
  t.string   "name"
  t.boolean  "winner"
  t.datetime "created_at",                    :null => false
  t.datetime "updated_at",                    :null => false
  t.boolean  "completed",  :default => false
end

谢谢你的帮助!

更新:已解决

问题是我没有将“完成”设置为 attr_accessible。请注意,在以下 Put 语句中,虽然“已完成”返回 true,但“条目”哈希中只有“名称”和“获胜者”。

Started PUT "/api/entries/2" for 127.0.0.1
Processing by EntriesController#update as JSON
  Parameters: {"entry"=>{"name"=>"There", "winner"=>true}, "completed"=>true, "created_at"=>"2012-04-16T18:04:41Z", "id"=>"2", "name"=>"There", "updated_at"=>"2012-04-16T18:13:04Z", "winner"=>true}

将“完成”设置为 attr_accessible 后,它给出以下内容:

Started PUT "/api/entries/2" for 127.0.0.1
Processing by EntriesController#update as JSON
  Parameters: {"entry"=>{"name"=>"There", "winner"=>true, **"complete"=>true**}, "completed"=>true, "created_at"=>"2012-04-16T18:04:41Z", "id"=>"2", "name"=>"There", "updated_at"=>"2012-04-16T18:13:04Z", "winner"=>true}

更重要的是,它有效。

4

0 回答 0