2015-04-29 2 views
0

Добрый день, я пытаюсь обновить рейтинг пользователя с помощью form_for, чтобы заполнить текстовое поле его текущего рейтинга, а затем обновить его до введенного пользователем значения. Пока что все кажется простым, но что-то не очень хорошо, и я получаю эту ошибку. Помощь будет высоко оценена!Параметр отсутствует или значение пуст ROR

контроллер пользователя:

def edit_rating 
     @ad = Ad.find(params[:id]) 
     @user = User.find(@ad.user_id) 

     if @user.update_attributes(user_params) 
     flash[:notice] = "User Updated Successfully" 
     redirect_to(:action => 'index') 
     else 
     end 
    end 

    def user_params 
     params.require(:user).permit(:firstName, :lastName, :email , :password , :location, :rating) 
    end 

edit_rating вид:

<h2> 
    Edit User Rating 
</h2> 

<h4> 
    Name: <%= @user.firstName %> 
</h4> 

<p> 
    Current Rating: <%= @user.rating%> 
</p> 

<%=form_for(:user , :url => {:action => 'edit_rating' , :id => @user.id}) do |f| %> 

    <p> 
     Updated Rating: <%= f.text_field(:rating) %> 
    </p> 

    <%= submit_tag("Update Rating") %> 
<% end%> 

Это ошибка, что я получаю.

enter image description here

+0

Вы хотите сказать, что вам требуется ПгвЬЫате, LastName, адрес электронной почты, пароль, место жительства и рейтинг, но вы передаете только идентификатор –

+1

. Это происходит по запросу POST или GET? Это происходит, когда вы отправляете форму или просто просматриваете форму? Параметры на снимке экрана показывают, что для ': user' нет параметров, поэтому сообщение об ошибке. Вам нужно два разных действия контроллера для формы: один для просмотра формы (HTTP GET), а другой для обработки формы (HTTP POST). –

+0

На данный момент он находится при просмотре формы. –

ответ

1

Вы можете сделать обратное, чтобы не допустить вы можете использовать только Params вы только хотите использовать:

@user.update_attributes(rating: params[:user][:rating]) 
+0

Он дает «неопределенный метод' [] 'для nil: NilClass »в строке update_attributes. –

+0

, что означает, что пользовательский параметр не отправляется на сервер, вы можете проверить журналы и убедиться в отправке параметров, если это так, то ваш код должен работать, когда вы убедитесь, что атрибуты правильно отправлены –

+0

ohh, я уже вижу, что только id paramter send from error screenshoot, то атрибуты не отправляются на сервер для обновления пользователя –