Я новичок в рельсах, и в первый раз я работаю с pgsql. То, как мой проект настроен, требует, чтобы песня не могла быть создана без исполнителя. Для этого я использовал вложенные маршруты, чтобы идентификатор сохранялся. Моя проблема в том, что я пытаюсь создать индекс для всех исполнителей и песни независимо от исполнителя. Но я получаю ошибку ниже в обоих случаях:Создание общего индекса при использовании вложенных маршрутов
No route matches {:action=>"edit", :controller=>"users", :id=>nil}
в моих маршрутах файл:
resources :users do
resources :songs do
get 'approve', on: :member
get 'decline', on: :member
end
end
resources :songs
в контроллере пользователей
def index
@users = User.all
end
def edit
@user = User.find(params[:id])
end
В контроллере песни
def index
@songs = Song.all
end
def create
@song = current_user.songs.build(params[:song])
if @song.save
#Send confirmation email
@song.submit
flash[:success] = "Song created!"
redirect_to user_path(current_user)
else
render 'new'
end
end
def edit
@song = current_user.songs.find_by_id(params[:id])
end
В представлении индекса пользователей
<%= render @users %>
и частичный вид пользователя
<li>
<%= link_to user.name, user %>
<% if current_user.admin? && !current_user?(user) %>
| <%= link_to "delete", user, method: :delete,
data: { confim: "You sure?" } %>
<% end %>
</li>
Оба пользователя и песни Индексный похожи, так что я думаю, размещение и является излишним.
И это выход из моего development.log файла
Started GET "/users" for 127.0.0.1 at 2013-07-07 13:26:17 -0500
Processing by UsersController#index as HTML
[1m[35mUser Load (0.3ms)[0m SELECT "users".* FROM "users"
Rendered users/index.html.erb within layouts/application (0.6ms)
Rendered layouts/_shim.html.erb (0.0ms)
[1m[36mUser Load (0.5ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."remember_token" = 'PTlmu8452Oan4mX1SLHOnA' LIMIT 1[0m
Rendered layouts/_header.html.erb (3.9ms)
Completed 500 Internal Server Error in 62ms
ActionController::RoutingError (No route matches {:action=>"edit", :controller=>"users", :id=>nil}):
app/views/layouts/_header.html.erb:15:in `_app_views_layouts__header_html_erb___3568227543968708446_70195568870980'
app/views/layouts/application.html.erb:11:in `_app_views_layouts_application_html_erb___4424773992888194134_70195568771540'
Rendered /usr/local/rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.13/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.8ms)
ли указательный работу по-разному с PostgreSQL? Или я ошибаюсь или что-то здесь не вижу? У меня никогда не было этой проблемы с sqlite3, но, как я уже сказал, это мой первый опыт работы с pgsql. Мне нужна помощь, спасибо!
Параметр 'index'es в коде выше * действия * на * контроллерах * и ортогональны индексов в вашей базе данных (независимо от движка). – Johnsyweb
Ok @Johnsyweb, так почему я получаю эту ошибку? Я не думаю, что я сделал что-то не так, поэтому он должен работать нормально. –
Просто прочтите dev log: ошибка исходит от частичного имени _header в строке 15 (app/views/layouts/_header.html.erb: 15). Вставьте это, если вам нужна дополнительная помощь. –