2016-06-21 5 views
0

Noobの質問が、私はそれは同様に他の人を助けることができると思い、は、新しいフィールドを作成するには、コントローラでフォームデータを操作する - ここではRailsの

イムは、(ビュー)のフォームからデータを取得し、私のコントローラで私が使用したいですこのフィールドはinitialgpaであり、新しいフィールド:normalisedgpaを作成し、それをデータベースに戻します。しかしA)は、私のデータベースは決して更新とB)私は2で乗算を追加するとき、私はこのエラー未定義のメソッドを取得する「*」nilのために:

def update 
    @studentprofile = StudentProfile.find_by(id: params[:id]) 
    @studentprofile.update_attributes(student_profile_params) 
    redirect_to @studentprofile 
end 


def student_profile_params 
     params[:normalisedgpa] = params[:initialgpa].to_s * 2 

     params.require(:student_profile).permit(:status,:name,:imagethumbnail,:aboutme, :country, :state, :city,:language, :age,:gender,:initialgpa,:normalisedgpa,:universityname,:degree ,:degreetype ,:countryofdegree,:workexperience ,:wantstoworkin,:hasworkexperiencein,:permissiontoworkin,:currentlyemployed,:referencesuponrequest ,:worktype,:monthsspentabroadworking,:monthsspentabroadliving,:charitywork) 
end 

私も持っているNilClass以下

は私のコントローラのコードです代わりにupdateメソッド内に "params [:normalisedgpa] = params [:initialgpa] * 2"を配置し、 ".to_s"と運がなくなるようにしました。

乾杯! @ジェイ-AR Polidarioから上記の回答に追加するよう

答えて

1

コントローラ/ student_profiles_controller.rb

def update 
    @studentprofile = StudentProfile.find_by(id: params[:id]) 
    @studentprofile.update(student_profile_params) 
    redirect_to @student_profile 
end 

def student_profile_params 
    modified_params = params.require(:student_profile).permit(:status,:name,:imagethumbnail,:aboutme, :country, :state, :city,:language, :age,:gender,:initialgpa,:normalisedgpa,:universityname,:degree ,:degreetype ,:countryofdegree,:workexperience ,:wantstoworkin,:hasworkexperiencein,:permissiontoworkin,:currentlyemployed,:referencesuponrequest ,:worktype,:monthsspentabroadworking,:monthsspentabroadliving,:charitywork) 
    modified_params[:normalisedgpa] = modified_params[:initialgpa] * 2 
    modified_params 
end 

勧告

コントローラ/ student_profiles_controller.rb

def update 
    # use camelcase->underscore variable naming (i.e. @student_profile) instead of @studentprofile 
    # use .find instead of .find_by so that it will show a Not Found page instead when such StudentProfile does not exist anymore 
    @student_profile = StudentProfile.find(params[:id]) 

    # modifies @student_profile with the param values, but does not save yet to the database 
    @student_profile.assign_attributes(student_profile_params) 
    # manipulate the values here in the action and do not manipulate the params 
    @student_profile.normalisedgpa = @student_profile.initialgpa * 2 
    # handle validation errors, rather than silently failing when there is a validation error 
    if @student_profile.save # if saving to the database successful 
    # use flash messages (this is optional depending on your code) 
    redirect_to @student_profile, success: 'Student Profile updated' 
    else # if saving to the database not successful 
    # the line below is just an example depending on your code 
    render :edit 
    end 
end 

private 

def student_profile_params 
    params.require(:student_profile).permit(:status,:name,:imagethumbnail,:aboutme, :country, :state, :city,:language, :age,:gender,:initialgpa,:normalisedgpa,:universityname,:degree ,:degreetype ,:countryofdegree,:workexperience ,:wantstoworkin,:hasworkexperiencein,:permissiontoworkin,:currentlyemployed,:referencesuponrequest ,:worktype,:monthsspentabroadworking,:monthsspentabroadliving,:charitywork) 
end 
+0

素晴らしい、今正規化されたGPAを更新していること!しかし、乗算のフロントでは、単に10.0などの入力を受け取り、20.0ではなく1010.0に変換します。私のx * 2の使用は間違っていますか? –

+0

私は自分の答えを更新し、 '.to_s'を削除しました。なぜなら数字を1010になる文字列に変換するからです。 –

+0

あなたは素晴らしい人間です –

0

、あなた数学演算を成功させるために、パラメータに.to_iを追加する必要があるかもしれません。 たとえば、私のsale_priceの値が「1」で、単に「パラメータ* 3」を追加すると、結果は3(1 * 3 = 3)ではなく「111」になります。

はすなわち:

def sale_params 
     modified_params = params.require(:sale).permit(:store_id, :item_id, :quantity, :sale_price) 
     def sale_params 
     modified_params = params.require(:sale).permit(:store_id, :item_id, :quantity, :sale_price) 
modified_params[:sale_price] = modified_params[:quantity].to_i * 3.to_i 
     modified_params 
end 
関連する問題