Как изменить элемент html из ruby с помощью synatra и bootstrap
Вот мой файл 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
Есть ли способ изменить ярлык кнопки TestFunction от TestClass? Поэтому, используя приведенные выше примеры, могу ли я переименовать кнопку TestFunction, "что-то еще"?
Я понял способ сделать это. Я могу отправить сообщение '/test_function' и отправить параметры действия и имени. Затем используйте функцию в качестве третьего параметра функции post, чтобы получить возврат с стороны 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>