Как передать идентификатор другому контроллеру: нет неявного преобразования Symbol в целочисленную ошибку - PullRequest
0 голосов
/ 13 января 2020

Я хочу присвоить id «бумажной модели» «модели расписаний» и создать note_id. Однако появляется сообщение об ошибке «нет неявного преобразования символа в целое число». Может кто-нибудь помочь мне решить эту проблему?

paper / index. html .erb

<%= link_to "Go to Schedule", new_schedule_path(id: paper.id) %> 

rout.rb

get '/schedules/new/:id', to: 'schedules#new', as: :schedules_new

schedules_controller

class ActionsController < ApplicationController
  before_action :authenticate_user!
  before_action :set_schedule, only: [:edit, :update, :destroy]
   def new
    @schedule = Schedule.new
   end
   def create
    @schedule = Schedule.new(schedule_params)
    @schedule.user_id = current_user.id
    @schedule.note_id = params[:id]
    if @schedule.save
      redirect_to schedules_path, notice: "A schedule was saved!"
    end
   end
  def index
      @schedules = Schedule.all
  end
  def update
  end

  def delete
  end

Private
  def schedule_params
    params.require(:schedule).permit(:note_id, :user_id, :params[:id])
  end

  def set_schedule
          @schedule = Schedule.find(params[:id])
        end
end

params => «31», «controller» => «schedules», «action» => «new»} разрешено: false>

Ответы [ 2 ]

3 голосов
/ 13 января 2020

Вы даже не используете shedule_params значения, так как впоследствии вы переопределяете их ......

Тогда вы можете создать пустой Schedule объект и затем присвоить значения ...

def create
   @schedule = Schedule.new
   @schedule.user_id = current_user.id
   @schedule.note_id = params[:id]
   if @schedule.save
     redirect_to schedules_path, notice: "A schedule was saved!"
   end
end

Или, если я прав в ваших отношениях, это также может быть

def create
   @schedule = current_user.schedules.new
   @schedule.note_id = params[:id]
   if @schedule.save
     redirect_to schedules_path, notice: "A schedule was saved!"
   end
end
0 голосов
/ 24 января 2020

Я мог бы решить эту проблему следующим образом.

Контроллер:

def new
 @schedule = Schedule.new
 @schedule.note_id = params[:id]
end
def create
 @schedule = Schedule.new(schedule_params)
 @schedule.user_id = current_user.id
 if @schedule.save
   redirect_to schedules_path, notice: "A schedule was saved!"
 else
   render 'new'
 end
end
.
.
.
Private
def schedule_params
    params.require(:schedule).permit(:note_id, :user_id)
end

Добавить в просмотр

<%= f.hidden_field :id, :value => @schedule.note_id %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...