Witam. to mój pierwszy post, jestem początkujący.
Tworze szkielet pierwszej aplikacji na podstawie filmiku
Robię wszystko identycznie jak na filmie. Wszystko działa do chwili uruchomienia localhosta:
NoMethodError in User#index
Proszę o pomoc w razie potrzeby podeśle screena lub kody źródłowe.
Pozdrawiam.
Bantu
October 28, 2015, 2:20pm
2
Podeślij to co masz w users_controller.rb, krzyczy że nie ma w kontrolerze funkcji index ogólnie.
class UsersController < ApplicationController
GET /users
GET /users.json
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
end
GET /users/1
GET /users/1.json
def show
@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @user }
end
end
GET /users/new
GET /users/new.json
def new
@user = User.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @user }
end
end
GET /users/1/edit
def edit
@user = User.find(params[:id])
end
POST /users
POST /users.json
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
PUT /users/1
PUT /users/1.json
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
DELETE /users/1
DELETE /users/1.json
def destroy
@user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to users_url }
format.json { head :no_content }
end
end
end
a robiłeś: rake db:migrate
Tak robiłem identycznie jak na filmie na kursie railsforzombies tez tak samo jest jedyna różnica to ze w scaffold niektórzy podają typy kluczy np imie:string
w routes sprawdz czy nie masz literówki
resources :users
wszystkie pliki generowane są z automatu ale sprawdziłem i jest ok.
Możliwe że np brakuje mi jakiegoś pliku/biblioteki w railsach albo np zła wersja ?
chione
October 28, 2015, 2:54pm
8
Dziwne rzeczy więc równie dziwnie rzucę: a ‘rails s’ w konsolę wpisane?
Tak tak próbowałem wyłączyć i włączyć serwer tez nic poza tym na localhost:3000 działa strona ruby on rails a na localhost:3000/users już nie.
Próbowałem zarówno /user jak i /users.
komunikat w przeglądarce:
NoMethodError in Users#index
Showing /home/patryk/Pulpit/app/app/views/layouts/application.html.erb where line #5 raised:
undefined method `[]’ for nil:NilClass
Extracted source (around line #5 ):
2:
3:
4: App
5: <%= stylesheet_link_tag “application”, :media => “all” %>
6: <%= javascript_include_tag “application” %>
7: <%= csrf_meta_tags %>
8:
Rails.root: /home/patryk/Pulpit/app
Application Trace | Framework Trace | Full Trace
app/views/layouts/application.html.erb:5:in _app_views_layouts_application_html_erb___1528004032459113506_70015919514600' app/controllers/users_controller.rb:7:in
index’
Request
Parameters:
None
Show session dump
Show env dump
Response
Headers:
None
App::Application.routes.draw do
resources :users
The priority is based upon order of creation:
first created -> highest priority.
Sample of regular route:
match ‘products/:id’ => ‘catalog#view’
Keep in mind you can assign values other than :controller and :action
Sample of named route:
match ‘products/:id/purchase’ => ‘catalog#purchase’, :as => :purchase
This route can be invoked with purchase_url(:id => product.id)
Sample resource route (maps HTTP verbs to controller actions automatically):
resources :products
Sample resource route with options:
resources :products do
member do
get ‘short’
post ‘toggle’
end
collection do
get ‘sold’
end
end
Sample resource route with sub-resources:
resources :products do
resources :comments, :sales
resource :seller
end
Sample resource route with more complex sub-resources
resources :products do
resources :comments
resources :sales do
get ‘recent’, :on => :collection
end
end
Sample resource route within a namespace:
namespace :admin do
# Directs /admin/products/* to Admin::ProductsController
# (app/controllers/admin/products_controller.rb)
resources :products
end
You can have the root of your site routed with “root”
just remember to delete public/index.html.
root :to => ‘welcome#index’
See how all your routes lay out with “rake routes”
This is a legacy wild controller route that’s not recommended for RESTful applications.
Note: This route will make all actions in every controller accessible via GET requests.
match ‘:controller(/:action(/:id))(.:format)’
end
chione
October 28, 2015, 3:14pm
13
Railsy nie pozwoliłyby Ci uruchomić serwera bez zbundlowania ale na wszelki wypadek zatrzymaj serwer i zrób bundle install. Potem włącz serwer ponownie.
chyba nic nie pomogło ale pojawiło sie cos nowego tym razem inny komunikat w konsoli
$ rails s
=> Booting WEBrick
=> Rails 3.2.16 application starting in development on http://localhost:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2015-10-28 16:25:24] INFO WEBrick 1.3.1
[2015-10-28 16:25:24] INFO ruby 1.9.3 (2013-11-22) [x86_64-linux]
[2015-10-28 16:25:24] INFO WEBrick::HTTPServer#start: pid=3422 port=3000
Started GET “/users/” for 127.0.0.1 at 2015-10-28 16:25:30 +0100
Connecting to database specified by database.yml
Processing by UsersController#index as HTML
User Load (0.2ms) SELECT “users”.* FROM “users”
Rendered users/index.html.erb within layouts/application (8.0ms)
Completed 500 Internal Server Error in 883.6ms
ActionView::Template::Error (undefined method []' for nil:NilClass): 2: <html> 3: <head> 4: <title>App</title> 5: <%= stylesheet_link_tag "application", :media => "all" %> 6: <%= javascript_include_tag "application" %> 7: <%= csrf_meta_tags %> 8: </head> app/views/layouts/application.html.erb:5:in
_app_views_layouts_application_html_erb__128639764330295002_70351665288180’
app/controllers/users_controller.rb:7:in `index’
Rendered /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/templates/rescues/_trace.erb (3.3ms)
Rendered /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/templates/rescues/_request_and_response.erb (2.5ms)
Rendered /usr/lib/ruby/vendor_ruby/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (16.9ms)
Panowie, po 2 dniach szukania UDAŁO SIĘ !!!
fragment informacji w przeglądarce:
4:
5: <%= stylesheet_link_tag “application”, :media => “all” %>
6: <%= javascript_include_tag “application” %>
7: <%= csrf_meta_tags %>
8:
“application” – to tu był problem należało zmienić to na nazwę tabeli bazy danych i o dziwo udało sie wszystko działa wyśmienicie
zastanawiające jest tylko to dlaczego nie wygenerowało tego automatycznie tak jak na wszystkich poradnikach ?
Dzięki wszystkim za zaangażowanie.
Pozdrawiam i do zamknięcia.