0

has_manyの関連付けがあり、ユーザーのWebサイトを取得したいのですが、コンソールuser.websitesからすべてのWebサイトのリストが表示されますが、コントローラーで試してみると次のようになります。

     def index
      @websites = User.find(params[:user_id]).websites
    end

エラーが発生します:編集

     Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.2/lib/action_dispatch/middleware/templates/rescues/_trace.erb (3.0ms)
    Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
   Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (99.0ms)
         ←[1m←[36mUser Load (2.0ms)←[0m  ←[1mSELECT `users`.* FROM `users` WHERE `users`.`id` =67 LIMIT 1←[0m
    Completed 500 Internal Server Error in 2ms
 ActiveRecord::RecordNotFound (Couldn't find User without an ID):
 app/controllers/websites_controller.rb:10:in `index'

しかし、私はログインしていて、id = 67のユーザーがいます:

          User.find(67)
         => #<User id: 67, first_name: "admin", ...

私からしてみれば:

 <% @websites.each do |website| %>
 <%= website.name  %>  
   <%= website.url %> 
  <p> <%= website.category %>
  <%= website.language %> 
<%end%>

EDIT。インデックスビューでparams[:user_id]を調べようとしましたが、何も表示されませんでした。

        <%= params[:user_id]%>

エラーが発生するのはなぜですか?

4

1 に答える 1

1

どこparams[:user_id]から入手していますか?

やってみました:

def index
  @websites = User.find(params[:id]).websites
end

ユーザーを見つける方法を説明する必要があります。
あなたはログインしていると言いましたが、あなたは持っていますcurrent_userか?

def index
  @websites = current_user.websites
end

または部分的にそれを行います:

def index
  @user = #find the user 
  @websites = @user.websites
end
于 2012-07-23T10:50:44.450 に答える