0
我使用gem 'firebase'
并从firebase获取数据。我可以create,show
的数据,但update action
的问题。这里是我的代码user.rb
文件未定义的方法`model_name'为#<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
和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'
我试过了很多次,但注意到工作。任何建议? 如果你需要更多的信息,请告诉我。 在此先感谢。
哪个是错误的行号?也许是出现'user_params'的行? – Ursus
我没有添加user_params问题,我马上添加 – Mezbah
是的,在更新方法 – Ursus