所以,我遇到的问题是我认为是一个非常简单的问题。我不知道如何访问用户输入......或者我不知道如何在rails中声明临时变量。
无论如何,实现这一目标最直接的方法是什么:
<div>
Enter Group Size: <%= number_field_tag(:group_size)%>
Select Study Site: <%= number_field_tag(:site) %>
</div>
<% if :site > 4 %>
Hello!
<% else %>
Nope!
<% end %>
我想我需要javascript来实际运行,但是现在我只需要知道如何使用这些变量。
非常感谢任何帮助。感谢。
答案 0 :(得分:4)
要使用ERB动态使用它们,需要将它们包装在表单中并提交给服务器。然后,您可以使用params[:variable_name]
轻松访问它们。在控制器中准备消息可能会更清晰,但如果您不需要与模型交互,那么使用一些基本的JS来完成所有操作会更直接。
答案 1 :(得分:2)
与大多数事情一样,解决方案涉及的内容更多:
<强>的Ajax 强>
与原生应用不同,Rails依赖于HTTP protocol
HTTP适用于请求。您将请求发送到服务器以呈现网页;服务器响应请求。这样做的问题是你不能在没有向服务器发送请求的情况下使用带有“实时”功能的Rails(即使是“实时”应用程序只是保持永久连接打开,作为单个请求)
这意味着如果您要处理“实时”数据(无需刷新),则必须使用技术代表您发送请求。如您所述,这将是ajax:
$(".element").on("action", function(){
$.ajax({
url: "your/end/point"
data: {your: data}
success: function(data) {
alert(data)
}
});
});
<强>滑轨强>
要在Rails中处理ajax请求,它与处理HTTP请求基本相同:
#config/routes.rb
resources :controller do
get :your_endpoint
end
#app/controllers/controllers_controller.rb
def your_endpoint
# perform actions here
respond_to do |format|
format.html
format.js { # handles JS / Ajax request }
end
end
<强>返回强>
然后,您可以使用JS(Ajax)函数处理返回的数据。这使得图像“实时”工作,但实际上会发送&amp;每次都接收来自服务器的请求