首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails/Ajax/ jQuery:将多个参数从jquery传递到Rails控制器

Rails/Ajax/ jQuery:将多个参数从jquery传递到Rails控制器
EN

Stack Overflow用户
提问于 2017-12-11 18:39:20
回答 1查看 1.3K关注 0票数 0

我需要通过jquery从单选按钮通过jquery传递两个参数(选定的选项和选定的人数),通过ajax传递给Rails控制器,如果有任何帮助,我将不胜感激。这两个参数都是计算定价所必需的(请参阅下面控制器中的@price代码),现在我一次只能传递一个参数进行计算。

我的表单html代码如下所示:

代码语言:javascript
运行
复制
    <%= form_for @cartedactivity, url: carted_activities_path, method: :post, remote: true do |f| %>
                    1. Choose option
                        <div class = "options">
                            <center> 
                                <% @options.each do |option| %> 
                                    <div class = "radio" id = "option_radio">
                                        <%= f.radio_button :supplier_activity_option_id, option.id, :onclick => "save_option();" %>
                                        <%= f.label :supplier_activity_option_id, option.option_name, :value => option.id %>
                                    </div>
                                <% end %> 
                            </center>
                        </div>


            <h5>2. Number of Persons</h5>
                <div class = "numbers">
                    <center>
                        <h5>
                            <%@numbers.each do |number| %>
                                <div class = "radio" id = 

"quantity_radio">
                                        <%= f.radio_button :activity_quantity, number, :onclick => "save_quantity();" %>
                                        <%= f.label :activity_quantity, number, :value => number %>
                                    </div>
                                <% end %> 
                            </h5>
                        </center>
                    </div>

                <h5>3. Start date
                <%= f.date_field :activity_date, min: (Date.today+2.days), max: (Date.today+4.months)%>
                </h5>

            <hr>

            <div id = "check-price-<%=@option%>"></div>


            <div class = "booking-btn">
                <%= f.submit "Add to Cart", class: "btn btn-book" %>
            </div>

        <% end %> 
    </div>
    </div>

<br><br>



<script> 

function save_option() 
    {var optionValue = $('input[name = "carted_activity[supplier_activity_option_id]"]:checked').val();
    if (optionValue) {
            $.ajax({
            type:    "POST",
            url:     "/supplier_activities/price_check",
            data:    { optionValue },
            success: function(post){ console.log('success') },
            error:   function(post){ console.log(this) }
          });
    }
};

function save_quantity() 
    {var quantityValue = $('input[name = "carted_activity[activity_quantity]"]:checked').val();
    if (quantityValue) {
        $.ajax({
            type:    "POST",
            url:     "/supplier_activities/price_check",
            data:    { quantityValue },
            success: function(post){ console.log('success') },
            error:   function(post){ console.log(this) }
          });
    }
};

部分html仅为<% @价格%>

控制器代码为:

代码语言:javascript
运行
复制
def price_check
    @option = params[:optionValue]
    @number = params[:quantityValue]
    if !@option.blank? && !@number.blank? 
        @price = Price.find_by("supplier_activity_option_id = ? AND min_qty_for_price <= ? AND max_qty_for_price >= ?", params[:optionValue], params[:quantityValue], params[:quantityValue]).price_usd 
    else 
        @price = 100
    end 
    respond_to do |format|
            format.js {render layout: false} 
    end
end 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-13 22:40:16

找到了解决方案-每次单击任何单选按钮时,都会传递两个选中的单选按钮的值。这意味着每当单选按钮被单击时,两个选中按钮的值都会同时传入。

代码语言:javascript
运行
复制
    <script> 

        function save_option() 
    {var optionValue = $('input[name = "carted_activity[supplier_activity_option_id]"]:checked').val();
    var quantityValue = $('input[name = "carted_activity[activity_quantity]"]:checked').val();
    if (optionValue) {
        $.ajax({
          type:    "POST",
          url:     "/supplier_activities/price_check",
          data:    { optionValue: optionValue, quantityValue: quantityValue },
          success: function(post){ console.log('success') },
          error:   function(post){ console.log(this) }
        });
    }
  };

  function save_quantity() 
    {var quantityValue = $('input[name = "carted_activity[activity_quantity]"]:checked').val();
    var optionValue = $('input[name = "carted_activity[supplier_activity_option_id]"]:checked').val();
    if (quantityValue) {
      $.ajax({
          type:    "POST",
          url:     "/supplier_activities/price_check",
          data:    { quantityValue: quantityValue, optionValue: optionValue },
          success: function(post){ console.log('success') },
          error:   function(post){ console.log(this) }
        });
    }
  };

    </script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47751058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档