2015-03-20 3 views
0

Я новичок в рубин на рельсах, и я пытался создать простое приложение, когда я в конечном итоге иметь «ActiveModel :: ForbiddenAttributesError»ActiveModel :: ForbiddenAttributesError при создании новой записи

class PostsController < ApplicationController 
def index 
    @posts = Post.all  
end 
def show 
    @post = Post.find(params[:id]) 

end 

def new 
    @post =Post.new 
end 

def create 


    @post = Post.new(params[:post]) 

    if @post.save 
     redirect_to post_path,:notice=>"success" 
    else 
     render "new" 
    end 

end 

def edit 

end 

def update 

end 


def destroy 
end 

частный

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

конец

Я видел подобную ошибку на ActiveModel::ForbiddenAttributesError when creating new user но решение для этого не исправить мою проблему

Моя версия рельсов - 4.2.0.

ошибка отображаемая

enter image description here

ответ

1

Вы не можете использовать это params[:post] хэш (или любой params[*] хэш) непосредственно в любом методе массового назначения, вам нужно использовать permit вызов так Rails знает, что вы проверили его и разрешить его.

Таким образом, измените ваш Post.new на @post = Post.new(post_params)

+0

эй, который исправил эту проблему, теперь он показывает на линии redirect_to post_path,: notice => «success» с отображением сообщения об ошибке, поскольку маршрут не соответствует {: action => "show",: controller => "posts"} Отсутствующие необходимые ключи: [: id] Я пытаюсь вывести его на предыдущую страницу, где отображается новая введенная запись, –

+0

Добро пожаловать в StackOverflow. Задавать последующие вопросы в комментариях к ответам, которые вы даже не поддержали, несмотря на то, что их нашли полезными, оставляет людей с плохим впечатлением от вас. Пожалуйста, найдите время и прочитайте справку, особенно [Что делать, если кто-то отвечает на мой вопрос?] (Http://stackoverflow.com/help/someone-answers). И вы действительно должны задать свой новый вопрос в качестве нового вопроса, а не в комментариях по этому вопросу. – smathy

+1

ОК сделают это, спасибо –

1

Изменение @post = Post.new(params[:post]) в @post = Post.new(post_params).

+0

эй, что зафиксировано, что вопрос, теперь он показывает на redirect_to post_path линии ,: уведомление => "успех" с ошибкой отображение сообщений, поскольку маршрут не соответствует {: action => "show",: controller => "posts"} отсутствующие необходимые ключи: [: id] Я пытаюсь вывести его на предыдущую страницу, где отображается новое введенное сообщение, –

+1

Если у вас есть новый вопрос, добавьте новый вопрос. –

0

Я думаю, что

def create 
    @post = Post.new post_params 
    if @post.save 
    flash[:success] = "Created new post" 
    redirect_to @post 
    else 
    render 'new' 
    end 
end 
Смежные вопросы