Получение «NoMethodError» через ajax-вызов с сильными параметрами, но без него работает нормально - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь использовать сильные параметры через вызов ajax, и я получаю NoMethodError (undefined method 'permit' for ...) с кодами ниже:

вызов ajax

onSubmit(value) {
  const url = '/tweets/create';
  $.ajax({
    url: url,
    dataType: 'text',
    type: 'POST',
    cache: false,
    data: {
      tweet: value
    },
    success: (data) => {
      // whatever
    },
    error: (xhr, status, err) => {
      console.error(url, status, err.toString());
    },
  });
}

tweets_controller.rb

def create
  tweet = Tweet.new(create_params)
  tweet.save
end

private
  def create_params
    params.require(:tweet).permit(:tweet)
  end

tweet.rb

  belongs_to :user

  validates :tweet, { presence: true }

Однако, это работает нормально, если я не использую сильные параметры с тем же вызовом ajax, как показано ниже:

def create
  tweet = Tweet.new(tweet: params[:tweet])
  tweet.save
end

Как я могу сделатьэто работать с сильными параметрами?

1 Ответ

0 голосов
/ 24 ноября 2018

Интересно, проблема в том, что аргументом для функции разрешения должен быть один или несколько (или массив) скалярных значений, а не объект?Согласно документации Git Hub ,

Чтобы внести в белый список весь хэш параметров, разрешите!Можно использовать метод

params.require(:log_entry).permit!

Вы можете попробовать

params.require(:tweet).permit!

, если вы этого еще не сделали, и посмотреть,это исправляет.В противном случае, по ссылке выше есть много документации, которая может помочь.Если вы все еще застряли, попробуйте опубликовать код из файла tweets.rb выше, чтобы другие могли его проверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...