2016-08-04 9 views
0

私はgem 'firebase'を使用し、firebaseからデータを取得しています。私はcreate,showデータですが、update actionの問題です。ここuser.rbファイル#<Hash:0x007efcfb0c19e0>のための未定義のメソッド 'model_name'

require 'firebase' 
class User < ActiveRecord::Base 
    FIREBASE = Firebase::Client.new("url" ,"secret") 
    def self.all 
    response = FIREBASE.get('users') 
    response.body.present? ? response.body : {} 
    end 

    def self.find(id) 
    FIREBASE.get("https://stackoverflow.com/users/#{id}").body 
    end 

    def self.update(id, data) 
    response = FIREBASE.update("https://stackoverflow.com/users/#{id}", data) 
    return response.success? 
    end 
end 

とusers_controller.rbファイルを私のコードです:

class UsersController < ApplicationController 

    respond_to :html, :json 

    def edit 
    @user = User.find("#{params[:id]}") 
    end 

    def update 
    @user = User.find(params[:id]) 
    User.update("#{@user[0]}", user_params) 
    respond_with @user 
    end 
private 

    def user_params 
    params.require(:user).permit(:name) 
    end 
end 

とedit.html.erbファイル:

:ここ
<%= form_for @user do |f| %> 
    <%= f.text_field :name %> 
    <%= f.submit %> 
<% end %> 

は私のエラーログです
Started GET "https://stackoverflow.com/users/-KOKEM82melqy/edit" for 180.211.159.218 at 2016-08-04 12:19:58 +0000 
Cannot render console from 180.211.159.218! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 
Processing by UsersController#edit as HTML 
    Parameters: {"id"=>"-KOKEM82melqy3"} 
    Rendered users/edit.html.erb within layouts/application (5.2ms) 
Completed 500 Internal Server Error in 40ms (ActiveRecord: 0.0ms) 

ActionView::Template::Error (undefined method `model_name' for #<Hash:0x007efcfb7c6ab0>): 
    1: <h1>Editing user</h1> 
    2: <%= form_for @user do |f| %> 
    3:  <div class="field"> 
    4:  <%= f.label :name %><br> 
    5:  <%= f.text_field :name %> 
    app/views/users/edit.html.erb:2:in `_app_views_users_edit_html_erb__2046577153275023374_69812507750700' 

私は多くの時間しかし、仕事に注意してください。なにか提案を ? これについてさらに詳しい情報が必要な場合は、教えてください。 ありがとうございます。

+0

エラーの行番号はどれですか?おそらく 'user_params'と表示される行ですか? – Ursus

+0

私は問題のuser_paramsを追加しませんでした。すぐに追加します – Mezbah

+0

はい、更新方法 – Ursus

答えて

0

どうやら

def self.find(id) 
    FIREBASE.get("https://stackoverflow.com/users/#{id}").body 
end 
Hashを返し

したがって、Userクラスインスタンスに変換する必要があります。または、form_forヘルパーを使用することはできません。

関連する問題