簡體   English   中英

Rails Ajax ActionController ::允許參數:false

[英]Rails ajax ActionController::Parameters permitted: false

我正在嘗試進行Ajax調用,以在單擊鏈接時返回我的所有評論。 當我單擊鏈接時,我正在調用傳遞參數的User模型方法,並且收到此錯誤<ActionController::Parameters {"controller"=>"users", "action"=>"show_all_reviews"} permitted: false>

我的user_controller:

class UsersController < ApplicationController
  def show
    @user = User.find(params[:id])
    @my_reviews = @user.my_reviews.where.not(comment: [nil, ""])
    @my_reviews = @my_reviews.paginate(:page => params[:page], :per_page => 1)
    @friends = @user.get_friends_list
  end

  def show_all_reviews
    @user = User.find(params[:user_id])
    @my_reviews = @user.my_reviews.where.not(comment: [nil, ""])
  end

  private

  def user_params
    params.require(:user).permit(:description, :phone)
  end
end

那是我執行Ajax調用的按鈕<%= link_to 'Mostrar todos los comentarios', '#', remote: true, id: 'show_more_link', data: {user: @user.id} %>

而我的jQuery函數:

$('#show_more_link').on('click', function(event) {
  event.preventDefault();
  var user_id = $(this).data("user");
  console.log(user_id);
  $.ajax({
    url: "/show_all_reviews",
    type: "POST",
    data: {
      "user_id": user_id,
    },
    dataType: "json",
    success: function(data) {
      alert('done');
    }
  });
});

我將其添加到routes.rb

get '/show_all_reviews', to: 'users#show_all_reviews', as: :show_all_reviews

你犯了一個錯誤。 在ajax代碼中將類型更改為GET。 正如我在您的路線中看到的那樣,使用GET類型的自定義操作。

或者,您也可以在此處修改方法。 使用名稱空間。 在您的routes.rb中添加:

namespace :users, path: nil, as: nil do
  resources :users, only: [] do
    resources :reviews, only: :index
  end
end

在控制器/用戶下創建新文件夾。 在此處添加新控制器:

控制器/用戶/reviews_controller.rb

 class Users::ReviewsController < ApplicationController
   def index
    @user = User.find(params[:user_id])
    @reviews = @user.my_reviews.where.not(comment: [nil, ""])

    render json: @reviews
   end
 end

內部視圖文件:

 <%= link_to 'reviews', user_reviews_path(user), remote: true %>

您不需要使用$.ajax() 這可以通過簡單的方式完成:-

路線:-

get '/show_all_reviews/:user_id', to: 'users#show_all_reviews', as: :show_all_reviews

將路徑添加到link_to包括遠程:true

<%= link_to 'Mostrar todos los comentarios', show_all_reviews_path(user_id: @user.id), remote: true, id: 'show_more_link' %>

暫無
暫無

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

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