如何使用sinatra和bootstrap从ruby更改html元素

时间:2016-02-04 21:38:53

标签: html ruby sinatra

这是我的index.erb文件:     

  <a class="btn" href='javascript:TestFunction()' role="button">TestFunction</a>

  <script language="javascript"> 

     function TestFunction() {
       $.post("test_function", { action: "foo", name: "bar" } );
     }

  </script>
</body>

我的app.rb文件看起来像这样

class ConfigureApp < Sinatra::Base
  get '/' do
    erb :index
  end

  post '/test_function' do
    button_action = params.fetch("action")
    test_class = TestClass.new
    test_class.action(button_action)
  end
end

TestClass.rb文件:

class TestClass
  def action(button_action)
    if button_action == "foo"
      new_button_label = "something else"
    end
  end
end

我有办法从TestClass更改TestFunction按钮的标签吗?因此,使用上面的示例,我可以重命名TestFunction按钮,&#34;其他内容&#34;?

1 个答案:

答案 0 :(得分:0)

我想出了办法。我可以发帖子&#39; / test_function&#39;并发送动作和名称参数。然后使用函数作为post函数的第3个参数从Ruby端返回,这可以返回按钮的新标签。然后,我可以使用Jquery更新按钮的html或innerText或我需要更新的任何内容。这就是我实现这个的方式:

  <a class="btn" id='btn-foo' href='javascript:TestFunction()' role="button">TestFunction</a>

  <script language="javascript"> 

     function TestFunction() {
       $.post("test_function", { action: "foo", name: "bar" }, function(data) {
         $('#btn-foo').html = data;
       });
     }

  </script>
</body>