Ruby on 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才能真正使其正常工作,但是现在我只需要知道如何使用这些变量。

任何帮助将不胜感激。谢谢。

要与ERB动态使用它们,需要以形式包裹并提交给服务器。然后,您可以使用params[:variable_name]轻松访问它们。在控制器中准备消息可能会更干净,但是如果您不需要与模型进行交互,那么使用一些基本JS来完成所有操作将更加简单。

与大多数情况一样,解决方案涉及更多:


ajax

与本机应用不同,Rails依赖于HTTP协议

HTTP在请求下工作。您将请求发送到服务器以渲染网页;服务器响应请求。问题是,您不能在不向服务器发送请求的情况下使用带有"实时"功能的导轨(即使是"实时"应用程序,只需保持永久连接打开,就可以充当单个请求)

这意味着,如果要处理"实时"数据(无需刷新),则必须使用技术代表您发送请求。正如您指出的那样,这将是Ajax:

$(".element").on("action", function(){
    $.ajax({
        url: "your/end/point"
        data: {your: data}
        success: function(data) {
            alert(data)
        }
    });
});

Rails

要处理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;每次从服务器接收请求

相关内容

  • 没有找到相关文章

最新更新