2013-09-10 4 views
1

Я пытаюсь отправить к следующему методу /users.jsonПроводка для Ruby On Rails JSON PUT

Вот мой код в Ruby On Rails

# POST /users 
# POST /users.json 

def create 
    @user = User.new(user_params) 

    respond_to do |format| 
    if @user.save 
     format.html { redirect_to @user, notice: 'User was successfully created.' } 
     format.json { render action: 'show', status: :created, location: @user } 
    else 
     format.html { render action: 'new' } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
    end 
    end 
end 

и внутри моего пользователя Params

def user_params 
    params.require(:user).permit(:name, :password, :password_confirmation, :avatar) 
end 

Я использую хром клиента Advanced REST размещать (http://postimg.org/image/fphun12fx/)

image http://postimg.org/image/fphun12fx/

Рельсы продолжали давать мне ошибку с указанием параметров не найден: пользователь, как я создаю параметров для пользователя?

Кроме того, если у нас есть параметр: пользователь, значит ли это для jQuery ajax, мне нужно было бы сделать что-то вроде ниже?

данные: {пользователь: {имя: хй, пароль: хй, password_confirmation: хй}}

+0

он будет работать, если я сделаю следующий params.permit (: name,: password,: password_confirmation,: avatar), но мне просто интересно, как мы решаем .require (: user) –

ответ

0

Когда вы пишете params.require(:user).permit(:name, :password, :password_confirmation, :avatar) сильных параметров это означает, что вы должны гнездиться ваш PARAMS под «пользователем» ключ, то есть ваш Params хэш должен выглядеть следующим образом:

{ "user"=>{"name"=>"name", "password"=>"password"} } 

Таким образом, на форме просто использовать рельсы образуют строителей или если вы используете form_tag то гнездо атрибуты под ключ «пользователя».

+0

Меня больше интересует отправляя запрос по почте с использованием Advance REST Client или javascript ajax-вызовов вместо использования rails form_builder или form_tag, что не является проблемой. –

+0

Ну, не важно, какой из них использовать, все, что вам нужно сделать, как я уже упомянул в своем ответе, - обернуть атрибуты в «пользовательский» ключ. К сожалению, я не знаком с клиентом Advanced REST, но с помощью ajax-вызова вы можете достичь этого, предоставив параметры в атрибуте данных '$ .ajax ({url: 'url', type: 'post', data: {user : {name: 'name', password: 'password'}}}) '. Но лучше использовать метод [serialize()] (http://api.jquery.com/serialize/) в форме. – tokenvolt

Смежные вопросы