Когда я хочу перерегистрировать форму, я получаю следующую ошибку: NoMethodError (неопределенный метод `allow 'для« create »: String) - PullRequest
0 голосов
/ 05 октября 2019

когда я отправляю данные формы, я получаю:

NoMethodError (неопределенный метод `allow 'для" create ": String):

app / controllers / actions_controller.rb: 53: inaction_params' app/controllers/actions_controller.rb:18:in create '

Это форма:

= controlled_form do
  = render 'shared/error_messages', object: @action
  = remote_form(@action, html: { id: "actionsForm" }) do |f|
    = input_group "fas fa-file-alt" do
      = f.text_field :name, \
        autofocus: true, \
        placeholder: t('actions.form.name'), \
        class: "form-control"

    = input_group 'fas fa-file-alt' do
      = f.text_area :description, \
        placeholder: t('actions.form.description'), \
        class: "form-control"

и функция создания:

def create
    @action = Action.new(action_params)
    if @action.save
        flash[:success] = "\"#{@action.name}\" was created"
        respond_to do |format|
        format.js { render js: "Turbolinks.visit('#{actions_path}')" }
    end
    else
        render_form status: :bad_request
    end
end

наконец:

def action_params
    params.require(:action).permit(:name, :description)
end

1 Ответ

1 голос
/ 05 октября 2019

«действие» - это специальный ключ в хэше params, который ссылается на текущее действие контроллера, вы не должны использовать action в качестве параметра. Я не уверен, что вы используете для своих форм (remote_form не является распространенным методом помощника по формам рельсов), но он должен дать вам возможность изменить его, например, параметр scope в form_with помощник https://apidock.com/rails/ActionView/Helpers/FormHelper/form_with

Измените его на что-то вроде «action_object» или на что-то другое, чем «action», а затем сделайте то же самое изменение на action_params.

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