如何在ruby volt中添加按钮?

时间:2015-07-06 21:40:52

标签: ruby voltrb

我试图找出如何在ruby伏特框架中添加一个按钮 - 它确实是一个初学者问题。

我已经尝试调整todos示例(part 1part 2),但还没有让它发挥作用。

我不太确定我是否有错误的HTML或控制器代码。任何指针都将非常感激。

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>

这确实在页面上放了一个按钮,但当我按下它时,我希望在控制器中触发以下代码,但没有任何反应。

main_controller.rb

module Main
  class MainController < Volt::ModelController
    model :store

 ...

    def add_message
      p "### Message triggered ###"
      _messages << {msg: "test-msg-01"}
    end

end

我已将p语句作为支票输入 - 当按下按钮时,它肯定不会被触发。

2 个答案:

答案 0 :(得分:2)

得到了@ryanstout的一些帮助 - 非常感谢。

我发布了这个答案,因为有两个简单的错误,如果你试图开始使用ruby volt框架,那么这些错误就是潜在的问题:

控制器代码很好,但html中有两个错误:

  1. HTML中存在一个小错误,第二个<tr>应该</tr>关闭行
  2. 外卖:目前没有由伏特(0.9.3)或我用于格式错误的HTML的Firefox版本生成的错误,但它可能会阻止您的代码工作 - 在这种情况下按钮没有'工作

    1. 对迭代器变量字段的引用需要一个前导下划线(所以m._msg不是m.msg)
    2. 外卖:父对象其字段需要下划线

      以下是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>
      

      希望对别人有所帮助。

答案 1 :(得分:0)

这似乎是正确的。但请记住 - 控制器在客户端运行。所以你应该在浏览器控制台中看到p语句的输出。

只是为了确定 - 您的观点位于app / main / views / main /?