2016-08-04 13 views
0

Ich benutze gem 'firebase' und erhalte Daten von Firebase. Ich kann create,show Daten aber Problem mit update action. hier ist mein Code user.rb Dateiundefinierte Methode `Modellname 'für # <Hash: 0x007efcfb0c19e0>

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 

und users_controller.rb Datei:

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 

und edit.html.erb Datei:

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

hier ist meine Fehlerprotokolle:

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' 

ich versuchte a viele Male, aber noting Arbeit. irgendein Vorschlag ? Wenn Sie weitere Informationen benötigen, lassen Sie es mich bitte wissen. Vielen Dank im Voraus.

+0

Wie lautet die Zeilennummer des Fehlers? Vielleicht erscheint die Zeile "user_params"? – Ursus

+0

Ich habe user_params nicht in Frage hinzugefügt, ich werde es in Kürze hinzufügen – Mezbah

+0

Ja, in Update-Methode – Ursus

Antwort

0

Offenbar

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

gibt ein Hash.

So müssen Sie entweder in User Klasseninstanz konvertieren oder Sie können form_for Helfer nicht verwenden.