簡體   English   中英

Ajax網址參數未正確附加-Rails 4

[英]Ajax url parameters not appended correctly - Rails 4

我正在嘗試使用jquery向我的Rails發出POST請求。

我對ajax調用的價值觀

$('input[type=submit]').unbind().bind('click', function() {
    // extract category id from hidden field
    var category = $("#category_id").val();
    var category_id = category.split("=>").pop(-1);
    category_id = category_id.replace("}","");
    // extract question id from hidden field
    var question = $("#question_id").val();
    var question_id = question.split("=>").pop(-1);
    question_id = question_id.replace("}","");

    // init new array to pass choices
    var checked = [];
    $("input:checked").each(function() {
      var whole_id = $(this).attr("id");
      var id = whole_id.split("_").pop(-1);
      checked.push(id);
    });

    var answers = JSON.stringify(checked);
    console.log(checked);
    retrieve(answers,category_id,question_id);
  });

阿賈克斯電話

function retrieve(answers,category,question) {

 $.ajax({
      cache: false,
      type: "POST",
      url: "/categories/" + category + "/questions/" + question + "/retrieve",
      data: answers,
      success: function(data) {

      },
      error: function(xhr) {
        alert("The error code is: " + xhr.statusText);
      }
    });
  };

路由

resources :categories do
    get '/random_question', action: 'random_question', controller: 'categories', as: 'random_question'

    resources :questions do
      post '/retrieve', to: 'questions#retrieve'

      resources :choices, only: [:index]
    end
  end

控制者

def retrieve
    @category = Category.find_by(params[:category_id])
    respond_to do |format|
      format.html { redirect_to category_questions_url, notice: 'success'  }
      format.json {
        render json: {
          message: "success"
          }
        }
    end
  end

我收到404錯誤(未找到),並且網址是這樣的

http://localhost:3000/categories/%222%22/questions 404 (Not Found)

這是錯誤的。

也在chrome dev工具的網絡選項卡中我得到了

ActiveRecord::RecordNotFound in QuestionsController#index

Couldn't find Category with 'id'="2"

只是注意到您發送的category_id和question_id是字符串,而不是數字。 代替棘手的黑客:

// extract category id from hidden field
var category = $("#category_id").val();
var category_id = parseInt(category);
// extract question id from hidden field
var question = $("#question_id").val();
var question_id = parseInt(question);

它應該是金色的。 在控制台中嘗試了一下方式,但仍然返回了字符串,這是您的問題

正如用戶TomD最初建議的那樣,我得到了字符串,並且需要將它們轉換為整數。

但是真正的問題是隱藏的輸入值屬性具有:value=>1而不是僅1

在隱藏的輸入字段上執行以下操作之后,所有操作均與TomD所說的一樣。

 <%= hidden_field_tag :category_id,params[:category_id], value: params[:category_id] %>
 <%= hidden_field_tag :question_id,params[:id], value: params[:id] %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM