I'm trying to work out how to add a button in the ruby volt framework - it's a bit of a beginner question really.
I've tried to adapt the todos example (part 1 and part 2), but haven't got it to work.
I'm not quite sure if I've got the html wrong or the controller code. Any pointers would be greatly appreciated.
watering.html
<button e-click="add_message">Start Watering</button>
<table class="message_table">
{{ _messages.each do |m| }}
<tr>
<td> {{ m.msg }} </td>
<tr>
{{ end }}
</table>
This does put a button on the page, but when I press it I was hoping to trigger the following code in the controller however nothing happens.
main_controller.rb
module Main
class MainController < Volt::ModelController
model :store
...
def add_message
p "### Message triggered ###"
_messages << {msg: "test-msg-01"}
end
end
I've put in the p statement as a check - it's definitely not triggered when the button is pushed.
Got this working with some help from @ryanstout - many thanks.
I'm posting this answer as there were two simple errors, which are potential gotchas if you're trying to get started with the ruby volt framework:
The controller code was fine, but there were two errors in the html:
<tr>
should be </tr>
to close the row Take-away: there is currently no error generated either by volt (0.9.3) or the version of Firefox I'm using for badly formed HTML, but it could stop your code working - in this case the button didn't work
Take-away: the underscores are needed on the parent object and its fields
Here's how the HTML should look:
<button e-click="add_message">Start Watering</button>
<table class="message_table">
{{ _messages.each do |m| }}
<tr>
<td> {{ m._msg }} </td>
<tr>
{{ end }}
</table>
Hope that's a help to someone else.