0
class PublicController < ApplicationController
def album_list
    @albums = Album.find_by_sql('SELECT * FROM albums;')

end
def alt_album_list
    @albums = Album.find(:all)
    render(:action => 'album_list')

end
def show_album
    @album = Album.find(:first)

end
def show
    @album = Album.find(params[:id])
    render(:action => 'show_album')

end
def new 
    @album = Album.new
end

这是我的溃败:

MusicLibrary::Application.routes.draw do
resources :albums
resources :public
get "public/album_list"
get "public/alt_album_list"
get "public/one_album_list"
get "public/show_album"
get 'public/show'
get 'public/create'
get 'public/new'
get 'public/edit'

模型 :

<html>
<head>
<title> Interesting </title>
</head>
<body> 
<%= form_for(@album) do |f| %>
<p>
<%= f.label :title %>
<%= f.text_field :title %>
</p>

<p>
<%= f.label :artist %>
<%= f.text_field :artist %>
</p>

<p>
<%= f.label :genre %>
<%= f.text_field :genre %>
</p>

<p>
<%= f.label :release_date %>
<%= f.datetime_select :release_date %>
</p>

<%= f.submit %>
<% end %>

</body>

</html>

我有一个错误 LIKE :Couldn't find [model] with ID rails 4 我知道这可以很简单controller,model和 view ,但由于该错误它不起作用。我没有复制整个内容,Controller因为它没用。其余代码看起来不错并且工作正常,但是...

4

2 回答 2

0

由于您尚未发布完整信息,因此这可能是一个远景。但是正如您提到的,您使用的是 Rails 4,似乎您有一些过时的语法。

def album_list
  @albums = Album.find_by_sql('SELECT * FROM albums;')
end

def alt_album_list
  @albums = Album.all
  render :album_list
end

def show_album
  @album = Album.first
end
于 2013-09-13T01:02:38.010 回答
0

您的错误:ActiveRecord::RecordNotFound in PublicController#show 找不到具有 id=show 的专辑意味着您没有传入 id,这可能意味着您可能因复制而手动发生某种碰撞的路线。

资源会自动为您提供带有 id 的显示路线,但是您输入的手动路径不允许并且将允许 id,除非您创建它:get "public/:id/show"

我猜你在哪里点击你的节目链接,或者重定向链接你不知何故使用了错误的路线。

我会删除你不必要的获取路线并这样做:

resources :public do
  get "album_list", :on => collection
  get "alt_album_list", :on => collection
  get "one_album_list", :on => collection
  get "show_album", :on => collection
end

我还将遵循其他建议,使用 all 代替 find(:all) 以及其他帖子中建议的其他建议,以使您的应用程序更清洁和最新。

于 2013-09-13T03:31:03.820 回答