在手动重新加载页面之前无法销毁模型
Can't destroy model until the page is manually reloaded
我正在尝试使用故事名称而不是待办事项来做类似于待办事项列表的事情。
型号代码:
class Story < Volt::Model
validate :name, length: 5
end
控制器代码:
module Main
class MainController < Volt::ModelController
model :store
def index
end
def add_story
new_story = Story.new(name: page._name)
_stories << new_story
page._name = ""
end
...
end
end
查看代码:
<:Title>
Home
<:Body>
<h1>Home</h1>
<form e-submit="add_story" role="form">
<div class="form-group">
<label>Todo</label>
<input class="form-control" type="text" value="{{ page._name }}" />
</div>
</form>
{{ _stories.each do |story| }}
<p>{{ story._name}}</p>
<button e-click="story.destroy">X</button>
{{ end }}
当我添加故事名称并尝试单击删除按钮时,出现以下错误:
Uncaught NoMethodError: undefined method `to_sym' for #<Story id: "94f1..fc0f", name: "Test">
错误的堆栈跟踪:
(anonymous function) @ app.js:3607
Opal.defn.TMP_1 @ app.js:2486
Opal.defn.TMP_2 @ app.js:20321
def.$method_missing.TMP_8 @ app.js:21386
method_missing_stub @ app.js:722
(anonymous function) @ app.js:18726
def.$destroy @ app.js:21518
def.$call.TMP_1 @ app.js:13114
(anonymous function) @ app.js:26485
$a.$$p.TMP_2 @ app.js:26475
Opal.yieldX @ app.js:850
def.$call.TMP_2 @ app.js:13044
$a.$$p.TMP_3 @ app.js:26634
Opal.yield1 @ app.js:830
def.$each.TMP_9 @ app.js:7253
$a.$$p.TMP_2 @ app.js:26634
Opal.defn.TMP_6 @ app.js:3497
def.$handle @ app.js:26639
$a.$$p.TMP_1 @ app.js:26610
jQuery.event.dispatch @ jquery-2.0.3.js:4677
elemData.handle @ jquery-2.0.3.js:4361
重新加载页面后,或者即使同时打开另一个 window,我也可以删除该故事。所以 #destroy
方法在 Story
模型上不起作用,直到我重新加载,但我不明白为什么以及如何修复它。
好的,这个问题由我来解决。如果你 运行 离开了 master,现在应该可以了。
gem 'volt', github: 'voltrb/volt'
我正在尝试使用故事名称而不是待办事项来做类似于待办事项列表的事情。
型号代码:
class Story < Volt::Model
validate :name, length: 5
end
控制器代码:
module Main
class MainController < Volt::ModelController
model :store
def index
end
def add_story
new_story = Story.new(name: page._name)
_stories << new_story
page._name = ""
end
...
end
end
查看代码:
<:Title>
Home
<:Body>
<h1>Home</h1>
<form e-submit="add_story" role="form">
<div class="form-group">
<label>Todo</label>
<input class="form-control" type="text" value="{{ page._name }}" />
</div>
</form>
{{ _stories.each do |story| }}
<p>{{ story._name}}</p>
<button e-click="story.destroy">X</button>
{{ end }}
当我添加故事名称并尝试单击删除按钮时,出现以下错误:
Uncaught NoMethodError: undefined method `to_sym' for #<Story id: "94f1..fc0f", name: "Test">
错误的堆栈跟踪:
(anonymous function) @ app.js:3607
Opal.defn.TMP_1 @ app.js:2486
Opal.defn.TMP_2 @ app.js:20321
def.$method_missing.TMP_8 @ app.js:21386
method_missing_stub @ app.js:722
(anonymous function) @ app.js:18726
def.$destroy @ app.js:21518
def.$call.TMP_1 @ app.js:13114
(anonymous function) @ app.js:26485
$a.$$p.TMP_2 @ app.js:26475
Opal.yieldX @ app.js:850
def.$call.TMP_2 @ app.js:13044
$a.$$p.TMP_3 @ app.js:26634
Opal.yield1 @ app.js:830
def.$each.TMP_9 @ app.js:7253
$a.$$p.TMP_2 @ app.js:26634
Opal.defn.TMP_6 @ app.js:3497
def.$handle @ app.js:26639
$a.$$p.TMP_1 @ app.js:26610
jQuery.event.dispatch @ jquery-2.0.3.js:4677
elemData.handle @ jquery-2.0.3.js:4361
重新加载页面后,或者即使同时打开另一个 window,我也可以删除该故事。所以 #destroy
方法在 Story
模型上不起作用,直到我重新加载,但我不明白为什么以及如何修复它。
好的,这个问题由我来解决。如果你 运行 离开了 master,现在应该可以了。
gem 'volt', github: 'voltrb/volt'