Jquery 在RubyonRails中单击显示元素

Jquery 在RubyonRails中单击显示元素,jquery,ruby-on-rails,ruby,view,onclick,Jquery,Ruby On Rails,Ruby,View,Onclick,我有一个页面,当有人点击“我想看答案”按钮后,应该会显示好的答案 我制作了一个图标,显示在正确答案旁边: <% if answer.correct == true %> <%= raw @ikona %><p> <%= answer.content %></p> <% else %> <p><%= answer.content %></p> <% en

我有一个页面,当有人点击“我想看答案”按钮后,应该会显示好的答案

我制作了一个图标,显示在正确答案旁边:

  <% if answer.correct == true %>
    <%= raw @ikona %><p> <%= answer.content %></p>
  <% else %>
  <p><%= answer.content %></p>
      <% end %>
      </div>
  <% end %>


我只想在用户单击按钮后显示它。它不能使页面重新加载,因为用户应该能够将他们勾选为正确的内容与实际的正确答案进行比较。我该怎么做呢?

前端

您要求的是如何处理Rails应用程序的
前端
后端

前端GUI功能不是Rails的用途-Rails是一个后端系统,用于接收
请求
并处理
响应

因此,要回答您的问题,您基本上需要在前端使用
jquery
来公开所需的内容
。在(“单击”
。问题是您希望如何显示该内容(可以使用Ajax)


JQuery

Javascript是客户端(在浏览器中加载)并影响DOM(文档对象模型)。这意味着页面上的每个HTML元素都可以受到Javascript的影响/操纵,从而允许您在页面上创建“交互性”

对于“单击”要求,您可以执行以下操作:

#app/assets/javascripts/application.js
$(document).on("click", "#element", function(){
   // do something here
});
这会将DOM的
单击事件绑定到您希望执行的功能,这基本上意味着加载您的
div

**请注意,我在上面使用过,因为Rails通常会阻止标准javascript工作(turbolinks会导致很多问题)


数据

一旦您在javascript中实现了
单击
事件绑定,您就需要一些功能来让它做一些有用的事情。您有两个选项:

  • Ajax(动态拉取数据)
  • 隐藏分区
  • --

    DIV

    基本上,如果您希望在单击按钮时显示内容,则需要从某处调用该内容。最简单的方法是使用隐藏的div,如下所示:

    #app/assets/stylesheets/application.css
    .hidden { display: none; }
    
    #app/assets/views/controller/your_view.html.erb
    <div class="hidden" id="your_id">
       Hidden content
    </div>
    
    --

    Ajax

    另一种方法是使用
    ajax
    提取所需的数据:

    #app/controllers/controller.rb
    respond_to :json, :js, :html
    
    
    #app/assets/javascripts/application.js
    $(document).on("click", "#element", function() {
        $.ajax({
           url: "answers/" + $(this).attr("id")
           success: function(data) {
               // append data to your DOM
           }
        });
    });
    

    前端

    您要求的是如何处理Rails应用程序的
    前端
    后端

    前端GUI功能不是Rails的用途-Rails是一个后端系统,用于接收
    请求
    并处理
    响应

    因此,要回答您的问题,您基本上需要在前端使用
    jquery
    来公开所需的内容
    。在(“单击”
    。问题是您希望如何显示该内容(可以使用Ajax)


    JQuery

    Javascript是客户端(在浏览器中加载)并影响DOM(文档对象模型)。这意味着页面上的每个HTML元素都可以受到Javascript的影响/操纵,从而允许您在页面上创建“交互性”

    对于“单击”要求,您可以执行以下操作:

    #app/assets/javascripts/application.js
    $(document).on("click", "#element", function(){
       // do something here
    });
    
    这会将DOM的
    单击事件绑定到您希望执行的功能,这基本上意味着加载您的
    div

    **请注意,我在上面使用过,因为Rails通常会阻止标准javascript工作(turbolinks会导致很多问题)


    数据

    一旦您在javascript中实现了
    单击
    事件绑定,您就需要一些功能来让它做一些有用的事情。您有两个选项:

  • Ajax(动态拉取数据)
  • 隐藏分区
  • --

    DIV

    基本上,如果您希望在单击按钮时显示内容,则需要从某处调用该内容。最简单的方法是使用隐藏的div,如下所示:

    #app/assets/stylesheets/application.css
    .hidden { display: none; }
    
    #app/assets/views/controller/your_view.html.erb
    <div class="hidden" id="your_id">
       Hidden content
    </div>
    
    --

    Ajax

    另一种方法是使用
    ajax
    提取所需的数据:

    #app/controllers/controller.rb
    respond_to :json, :js, :html
    
    
    #app/assets/javascripts/application.js
    $(document).on("click", "#element", function() {
        $.ajax({
           url: "answers/" + $(this).attr("id")
           success: function(data) {
               // append data to your DOM
           }
        });
    });
    

    如果你正在加载所有内容,那么你可以使用简单的jquery隐藏/显示事件来隐藏它并在点击图标时显示它。Ruby无法做到这一点,这是客户端逻辑,需要在Javascript上实现。正如@ICICILE所说,你最好使用jquery。Ryan Bate的railscasts谈到在rails中使用jquery…谢谢,我将尝试使用它是的!如果你正在加载所有内容,那么你可以使用简单的jquery隐藏/显示事件来隐藏它并在点击图标时显示它。Ruby无法做到这一点,这是客户端逻辑,需要在Javascript上实现。正如@Icicle所说,你最好使用jquery。Ryan Bate的railscasts谈到在rails中使用jquery…谢谢,我会尝试这