Witam wszystkich, to mój pierwszy post na tym forum. Jak zaczynałem z RoR to wszystko mi działało. Dopiero jak zacząłem instalować Aptanę to pojawił się problem. Problem jest nawet jak normalnie wszystko w CMD robię, otóż: tworzę projekt (rails -d mysql), robię odpowiednią bazę w mysql, tworzę model i migrację, i generuję scaffold odpowiedni. Jak już to zrobię i wchodzę na odpowiedni adres (http://localhost:3000/news) to mi się ładnie pokazuje nagłówek i link do stworzenia nowego rekordu. Jednak gdy chcę stworzyć nowy rekord to moim oczom ukazuje się takie coś:
ActionController::RoutingError in News#new
Showing app/views/news/new.html.erb where line #3 raised:
news_url failed to generate from {:controller=>“news”, :action=>“show”} - you may have ambiguous routes, or you may need to supply additional parameters for this route. content_url has the following required parameters: [“news”, :id] - are they all satisfied?
To przez nazwę resource z której skorzystałeś. Zrobiłeś zapewne script/generate scaffold news blabla. Przez to masz model, który się nazywa News i kontroler o takiej samej nazwie, co jest niezgodne z konwencją, bo model powinien mieć liczbę pojedynczą, a kontroler mnogą, żeby działało na domyślnych routes.
Twój problem wynikał z tego, że słowo “news” jest samo w sobie już liczbą mnogą. Dlatego też do map resources powinienes wykorzystać :singular => ‘new’ i to rozwiązało by twój problem, nastomiast ścieżka do nowego newsa byłaby new_path.: )
Dużo konwencji w Railsach opiera się na przekształcaniu słów z liczby mnogiej na pojedynczą lub na odwrót. Chyba nienajlepszym pomysłem jest stosowanie rzeczowników niepoliczalnych - wydaje mi się, że kiedyś było to już poruszane.
Dobrze na przyszłość wiedzieć Ale nie wiem dlaczego, na railsach 2.3.3 działało mi tak jak miałem na początku, a na 2.3.4 już nie. pewnie jakieś poprawki… Mam jeszcze jedno pytanie ale już nie do tego tematu: czy jeżeli chcę stworzyć stronę startową mojej aplikacji to mam jądawaćjako jeden z widoków jakiegoś kontrolera w app\views czy w public\ jako index.html?? i czy w tym index.html można dawać jakieś <% %>, bo to jednak tylko html, a nie rhtml.erb.