Nie moc z linkami

Witam,
Nie mogę poradzić sobie z linkami… (tak wiem, to mój problem, ale może ktoś ma wolna chwilę) byłem tutaj: http://api.rubyonrails.org/ + http://edgeguides.rubyonrails.org/getting_started.html +mam przed sobą, książkę, ale jednak coś nie gra…

Mam kontroler o nazwie “home” app->controllers->home_controller.rb
a w folderach
app->views->home-> help.hmtml.erb (oraz) index.html.erb
app->views>loyouts-> (plik) application.html.erb

application.html.erb do, którego wstawiam:

<%= link_to_unless_current(“Home”, { :action => “index” }) %>
<%= link_to_unless_current(“Help”, { :action => “help” }) %>

po czym dostaje błąd:
No route matches {:controller=>“home”, :action=>“help”}

Rozumiem, że nie można wyznaczyć trasy do akcji help? tak?

w routes.rb mam
mojabieda::Application.routes.draw do
root :to => “home#index”

czy ktoś mógłby wyłożyć mi (chociaż w jednym zdaniu) co pomyliłem?

swoją drogą jak wygenerować inny plik “motywu” zamiast application.html.erb ?

W pliku config/routes.rb masz całkiem sporo komentarzy, skorzystaj z nich.

Zawartość tego pliku musi być tak utworzona aby “pokrywała” wszystkie linki. W tym wypadku wystarczy dodać linię

get 'home/help'

lub nieco ciekawsze rozwiązanie

get 'help' => 'home#help'

Teraz w kodzie możesz wykorzystać link_to_unless_current ‘Help’, help_path

Przydatne polecenie: rake routes wywołane w konsoli w głównym katalogu aplikacji pokaże wszystkie zdefiniowane routingi.

dzięki wielkie za super odpowiedź!

Rzuć okiem na Rails For Zombies albo moje wykłady (5,6,7,8) - to jest absolutne minimum, żeby zacząć pisać aplikacje wychodzące “poza scaffold”.

byłem i pójdę jeszcze! po prostu czasem nie wiem czemu sam wykasowałem wcześniej te polecenia get

EDIT:
co zrobić jeżeli polecenie rake db:migrate nie działa?
pracuje na Aptanie wszystko jest spoko, ale ciężko zlokalizować mi bazę danych jak się (o ile można) do niej dostać

po wpisaniu polecenia >rake db:migrate
mam błąd :bad interpreter: No such file or directory.

To znaczy, że czegoś nie zainstalowałem?

Pozdrawiam

ps. Czy jest gdzieś miejsce na którym opisane zostały zmiany w poszczególnych wersjach ROR?

Tak, zajrzyj: https://github.com/rails/rails , w każdym module masz plik CHANGELOG.md , tam masz opisane zmiany dla poszczególnych modułów razem z wersjami.

Co do błędu: użyj rubyego 1.9.2 lub 1.9.3, komenda: rvm use 1.9.2
albo rvm use 1.9.3
Daj znać czy działa, a jak nie działa rzuć log.

oczywiście jak chcesz ustalić na stałe dodaj

--default

na końcu polecenia.

Pozdrawiam!

[code]admin@ADMIN-KOMPUTER ~/My Documents/Aptana Studio 3 Workspace/mojabieda
sh.exe": --default: command not found

admin@ADMIN-KOMPUTER ~/My Documents/Aptana Studio 3 Workspace/mojabieda
$ ruby --version
ruby 1.9.2p290 (2011-07-09) [i386-mingw32]

admin@ADMIN-KOMPUTER ~/My Documents/Aptana Studio 3 Workspace/mojabieda
$ rvm use 1.9.2p290
sh.exe": rmv: command not found

admin@ADMIN-KOMPUTER ~/My Documents/Aptana Studio 3 Workspace/mojabieda
$ ruby --version
ruby 1.9.2p290 (2011-07-09) [i386-mingw32]

admin@ADMIN-KOMPUTER ~/My Documents/Aptana Studio 3 Workspace/mojabieda
$ rvm use 1.9.2
sh.exe": rmv: command not found

admin@ADMIN-KOMPUTER ~/My Documents/Aptana Studio 3 Workspace/mojabieda
$ rvm use 1.9.2p290
sh.exe": rmv: command not found[/code]
tak to wygląda :slight_smile:

[quote=rwtryb]po wpisaniu polecenia >rake db:migrate
mam błąd :bad interpreter: No such file or directory.[/quote]
A co pokazuje polecenie:

gem list rake

po wpisaniu :

gem list rake

[code]*** LOCAL GEMS ***

rake (0.9.2.2, 0.8.7)[/code]
? :slight_smile:

proszę o pomoc, to już ostatni problem i w końcu będę mógł normalnie pisać…

zrób

bundle install

w katalogu projektu

<ukłon>
dzięki wielkie :slight_smile:


Edit:

Słuchajcie :slight_smile: eh… mam nadzieje, że nie nadużywam gościnności
mam kontroler user

Plik routes.rb:

[code] get “user/index”

get “user/register”

root :to => “home#index”

get ‘index’ => ‘home#index’
get ‘help’ => ‘home#help’
get ‘about’ => ‘home#about’[/code]
kiedy chce wejść na http://localhost:3000/user/register dostaje:
1.

No route matches {:action=>"about", :controller=>"user"}

nie rozumiem skąd ta akcja about, sprawdziłem w konsoli poleceniem rake routes i mam, że
np. działający index ma:

index GET /index(.:format)        {:action=>"index", :controller =>"home"}

Natomiast niedziałający user ma:

user_register GET /user/register(.:format)   {:controller =>"user", :action =>"register"}

Poszedłem więc po swój chłopski rozum i zrobiłem:

get 'user' => 'user#register'

co skończyło się:
2.

No route matches [GET] "/user/register"

co skończyło się wynikiem (po poleceniu) rake routes w konsoli:

user GET /user(.:format)  { :action=>"user", :controller=>"user"}

i w sumie nadal nie działa.
Skoro mam ścieżkę to w takim razie dlaczego się nie łączy? pierwsze (1.) oznacza, że nie ma ścieżki dla akcji “about” i kontrolera user, to się zgadza, ta akcja jest przypisana “home” i nie wiem skąd to “about”
natomiast w drugim (2.) ma niezdefiniowany “GET”, dobrze myślę, czy się pogrążam?

Nie jestem sam ^^

[quote=rwtryb]get 'user' => 'user#register'
co skończyło się:
2.

No route matches [GET] "/user/register"

co skończyło się wynikiem (po poleceniu) rake routes w konsoli:

user GET /user(.:format)  { :action=>"user", :controller=>"user"}

i w sumie nadal nie działa.
Skoro mam ścieżkę to w takim razie dlaczego się nie łączy? pierwsze (1.) oznacza, że nie ma ścieżki dla akcji “about” i kontrolera user, to się zgadza, ta akcja jest przypisana “home” i nie wiem skąd to “about”
natomiast w drugim (2.) ma niezdefiniowany “GET”, dobrze myślę, czy się pogrążam?[/quote]
Bo odwołujesz się do ‘/user’ , a nie ‘/user/register’ ; )

Spróbuj

match 'user/register' => 'user#register'

Pozdrawiam : )

to nie to, nadal jest to samo :frowning:
zastanawiałem się co jest źle, skoro po to korzysta się z konsoli, aby wywołać to wszystko z automatu i sam dodaje to co dodaje i nie działa, ehhh…

EDIT:
Nadal nie mam odpowiedzi, ale

byłem tutaj: http://apohllo.pl/guides/routing.html

i w sumie skoro polecenie rake routes pokazuje:

user_register GET /user/register(.:format) {controller=>"user", :action=>"register"}

to znaczy, że się zgadza, skoro kontroler jest user, a plik register, czyli prawidłowo wywołany adres to user/register, nie wiem dlaczego jest nie tak.

może to z powodu polecenia:

root :to => "home#index"

? choć niby dlaczego miało by być źle, to polecenie strony głównej

EDIT:
wygenerowałem sobie jeszcze raz poleceniem

rails generate controller User index register

i nadpisałem pliki i w sumie nadal nic, może powinienem użyć innego polecenia?

[quote=rwtryb]kiedy chce wejść na http://localhost:3000/user/register dostaje:
1.

No route matches {:action=>"about", :controller=>"user"}

nie rozumiem skąd ta akcja about[/quote]
A pokaż zawartość pliku app/views/user/register.html.erb

Witam,
dzięki wszystkim za pomoc :slight_smile:
wsparłem się forum głównym, co by nie nadużywać gościnności i okazało się, że nie określiłem kontrolera w linkach:

	<%= link_to_unless_current "Strona Główna", :controller => "home", :action =>"index" %> |

Przecież do strony głównej odwołuje się przez root_path…

W routes.rb

root :to => "home#index"

ale działa, natomiast nie wiem co mam zrobić z tym

[code]Include the gem

Gemfile

gem “authlogic”[/code]
umiem go zainstalować, ale co to oznacza Include (zaaplikuj)? trzeba jakieś parametry dodatkowe w konsoli wprowadzić? chodzi mi o to, że nie wiem jakie czynności przeprowadzić aby wykonać “Include” bo sam gem jest zainstalowany, a reszta wykonana :slight_smile:

:slight_smile:

To jest komentarz, żeby dołączyć gem “authlogic” do Gemfile.

powinienem go umieścić w config>environments.rb?