Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用嵌套管线时创建常规索引_Ruby On Rails_Ruby_Ruby On Rails 3_Postgresql_Nested Routes - Fatal编程技术网

Ruby on rails 使用嵌套管线时创建常规索引

Ruby on rails 使用嵌套管线时创建常规索引,ruby-on-rails,ruby,ruby-on-rails-3,postgresql,nested-routes,Ruby On Rails,Ruby,Ruby On Rails 3,Postgresql,Nested Routes,我是rails新手,这是我第一次使用pgsql。我的项目的设置方式要求在没有艺术家的情况下不能创作歌曲。为了实现这一点,我使用了嵌套路由,以便id保持不变。我的问题是,我试图为所有的艺术家创建一个索引,而不管艺术家是谁。但在这两种情况下,我都会得到以下错误: No route matches {:action=>"edit", :controller=>"users", :id=>nil} 在我的路由文件中: resources :users do resource

我是rails新手,这是我第一次使用pgsql。我的项目的设置方式要求在没有艺术家的情况下不能创作歌曲。为了实现这一点,我使用了嵌套路由,以便id保持不变。我的问题是,我试图为所有的艺术家创建一个索引,而不管艺术家是谁。但在这两种情况下,我都会得到以下错误:

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 %>

索引与postgresql的工作方式是否不同?还是我犯了个错误或遗漏了什么?我从来没有遇到过sqlite3的问题,但正如我所说的,这是我第一次使用pgsql。我需要帮助,谢谢

您似乎试图链接到编辑页面,但没有:id参数,该参数不正确

它应该是带有:id参数的routes to right:edit操作,如下所示

<%= link_to "Edit user", edit_user_path(user.id) %>


上面代码中的
索引
es是控制器上的操作,与数据库中的索引正交(不考虑引擎)。Ok@Johnsyweb,那么我为什么会出现此错误?我认为我在这里没有做错任何事情,所以它应该可以正常工作。只需阅读开发日志:错误来自第15行名为_header的部分(app/views/layouts/_header.html.erb:15)。如果还需要更多帮助,请将该链接粘贴到中。如果视图中没有编辑链接,则不应引发路由到编辑链接的路由错误
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)
<%= link_to "Edit user", edit_user_path(user.id) %>