Rails 4, Ошибка аргумента Неизвестный ключ, Обновление контроллера

Я получаю сообщение об ошибке при попытке изменить сообщение:

контроллер сообщений

def edit
 @post = Post.find params[:id]
end

посты # обновления контроллера:

def update
 @post = Post.find params[:post]

 if @post.update_attributes params[:post]
  redirect_to posts_path
 else
  render 'edit'
 end
end

редактировать вид:

h1 Edit Post
= form_for @post do |f|
 p
  = f.label :title
  = f.text_field :title
 p
  br
 p
  = f.label :content
  = f.text_area :content
 p
  br
 p
  = f.submit 'Update Post'
 p
  br

Это когда я получаю ArgumentError в сообщении PostsController#, Unknown Key: ошибка заголовка. Я все еще обдумываю концепцию сильных параметров в Rails 4, так что это может быть как-то связано с этим... есть идеи?

2 ответа

Решение

Попробуйте следующее, я надеюсь, это поможет вам.

def update
  @post = Post.find(params[:id])
  if @post.update(post_params)
    redirect_to @post
  else
    render 'edit'
  end
end

Я обновил контроллер сообщений # до

params[:id]

скорее, чем

params[:post]

это исправление принесло мне ForbiddenAttributesError, вызванную

if @post.update_attributes params[:post]

это связано с концепцией строгих параметров, введенной в Rails 4... Я исправил это, подставив

params[:post]

с сильным параметром

post_params

из частного метода post_params

 private
  def post_params
   params.require(:post).permit(:title, :content)
 end

в конечном итоге решение неизвестной ключевой ошибки:title

Другие вопросы по тегам