Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 On Rails 4 - Fatal编程技术网

Ruby on rails 链接时缺少必需的键

Ruby on rails 链接时缺少必需的键,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,所以,我有一个应用程序,有电影工作室,电影和剪辑。每个工作室都有一个相关的电影,每个电影都有相关的剪辑。此内容仅由网站管理员上传。现在,用户可以观看电影中的各种剪辑,每次用户观看剪辑时,都会产生一种“印象”。我用印象派的宝石来跟踪每个剪辑的视图。这与我的下一点有关 在管理后端,我想让管理员选择一个剪辑,并选择一个日期范围,然后当他们点击过滤器,它将显示所有的用户谁查看了该范围内的剪辑 我有一个表格格式的工作,但是,我不能显示一个链接到实际的电影或剪辑,我可以显示一个链接到np的工作室 我做错了什

所以,我有一个应用程序,有电影工作室,电影和剪辑。每个工作室都有一个相关的电影,每个电影都有相关的剪辑。此内容仅由网站管理员上传。现在,用户可以观看电影中的各种剪辑,每次用户观看剪辑时,都会产生一种“印象”。我用印象派的宝石来跟踪每个剪辑的视图。这与我的下一点有关

在管理后端,我想让管理员选择一个剪辑,并选择一个日期范围,然后当他们点击过滤器,它将显示所有的用户谁查看了该范围内的剪辑

我有一个表格格式的工作,但是,我不能显示一个链接到实际的电影或剪辑,我可以显示一个链接到np的工作室

我做错了什么

<% if @impressions %>
<table>
  <tr>
    <th>Studio</th>
    <th>Film</th>
    <th>Clip</th>

  </tr>
<% @impressions.each do |impression| -%>
<% @clip = Clip.where(id: impression.impressionable_id).first %>
<% @user = User.where(id: impression.user_id).first %>

    <tr>
    <th>
    <%= link_to @clip.film.studio.name,  saas_admin_studio_path(@clip.film.studio) %> < --- works fine!
    </th>
    <th>
    <%= link_to @clip.film.name, saas_admin_studio_film_path(@clip.film) %> <--- doesn't work (see error #1)
    </th>
    <th>
    <%=  link_to @clip.name, saas_admin_studio_film_clips_path(@clip) %> <--- doesn't work (see error #2)
    </th>
<% end -%>
<% end -%>

如果你看到自己的错误,他们会说:

缺少必需的密钥:[:id]

缺少所需的钥匙:[:胶片id]

因此,问题是您的路由是嵌套的,并且您没有传递完整的信息以形成正确的路由。请尝试以下链接:

<%= link_to @clip.film.name, saas_admin_studio_film_path(@clip.film.studio, @clip.film) %>
<%= link_to @clip.name, saas_admin_studio_film_clips_path(@clip.film.studio ,@clip.film) %>


它们之间有什么关联,你能发布rake路由的输出吗?我已经用适当的模型更新了帖子,显示了关联。另外,rake路由相当长,但我上面发布的路径是正确的。我想我知道问题所在,但需要确定这就是为什么要求您发布路由。您可以通过执行
rake routes controller=controller\u name
来检查控制器特定的路由,因此它不会给您一个很长的列表:)如果这些仍然不起作用,那么需要查看您的路由使用路由更新,我现在将查看此答案:)啊,我们非常接近了!clip.film.name成功了。。但是第二个clip.name返回了以下内容:ouldn't find Studio id=blab Extracted source(在第72行附近):def load_parents@Studio=Studio.find(params[:Studio_id])@sonnyback yeah更新了第二个。我传递了错误的变量,这就是为什么我要求路由:)
    ActionController::UrlGenerationError in SaasAdmin::Statistics#search
Showing /Users/me/Sites/multi/app/views/saas_admin/statistics/index.html.erb where line #60 raised:

No route matches {:action=>"index", :controller=>"saas_admin/clips", :film_id=>nil, :format=>nil, :studio_id=>#<Clip id: 1, name: "test", sort_name: "test", permalink: "test", description: "<p>test</p>", duration: nil, film_id: 5, active: true, trackable: true, view_count: nil, status: nil, thumbnail_remote_file: "", created_at: "2014-07-25 01:22:12", updated_at: "2014-07-25 01:22:12", thumbnail_file_name: "ABeautifulMind-ManySolutions.png", thumbnail_content_type: "image/png", thumbnail_file_size: 331462, thumbnail_updated_at: "2014-07-25 01:22:11", impressions_count: 5, position: 1>} missing required keys: [:film_id]
class Studio < ActiveRecord::Base

  # attr_accessible :name, :code, :active, :trackable
  after_save ThinkingSphinx::RealTime.callback_for(:studio)

  has_many :films, :dependent => :destroy
  has_many :clips, :through => :films

end
class Film < ActiveRecord::Base
  after_save ThinkingSphinx::RealTime.callback_for(:film)

  belongs_to :studio
  has_many :clips, :dependent => :destroy
  has_many :film_countries
  has_many :countries, :through => :film_countries, :source => :fcountry
 end
class Clip < ActiveRecord::Base
  after_save ThinkingSphinx::RealTime.callback_for(:clip)

  is_impressionable :counter_cache => true, :unique => :request_hash

  the impressionist gem is tracking all of the views for us. And what do u want to render ?

  a list of results, between the two dates of  usofe rwhat of users who viewed the clip u selected

  belongs_to :film
  has_one :video, :dependent => :destroy
  has_many :playlist_item
 end
sort_saas_admin_studio_film_clips POST     /admin/content/studios/:studio_id/films/:film_id/clips/sort(.:format)     saas_admin/clips#sort
       saas_admin_studio_film_clips GET      /admin/content/studios/:studio_id/films/:film_id/clips(.:format)          saas_admin/clips#index
                                    POST     /admin/content/studios/:studio_id/films/:film_id/clips(.:format)          saas_admin/clips#create
    new_saas_admin_studio_film_clip GET      /admin/content/studios/:studio_id/films/:film_id/clips/new(.:format)      saas_admin/clips#new
   edit_saas_admin_studio_film_clip GET      /admin/content/studios/:studio_id/films/:film_id/clips/:id/edit(.:format) saas_admin/clips#edit
        saas_admin_studio_film_clip GET      /admin/content/studios/:studio_id/films/:film_id/clips/:id(.:format)      saas_admin/clips#show
                                    PATCH    /admin/content/studios/:studio_id/films/:film_id/clips/:id(.:format)      saas_admin/clips#update
                                    PUT      /admin/content/studios/:studio_id/films/:film_id/clips/:id(.:format)      saas_admin/clips#update
                                    DELETE   /admin/content/studios/:studio_id/films/:film_id/clips/:id(.:format)      saas_admin/clips#destroy
            saas_admin_studio_films GET      /admin/content/studios/:studio_id/films(.:format)                         saas_admin/films#index
                                    POST     /admin/content/studios/:studio_id/films(.:format)                         saas_admin/films#create
         new_saas_admin_studio_film GET      /admin/content/studios/:studio_id/films/new(.:format)                     saas_admin/films#new
        edit_saas_admin_studio_film GET      /admin/content/studios/:studio_id/films/:id/edit(.:format)                saas_admin/films#edit
             saas_admin_studio_film GET      /admin/content/studios/:studio_id/films/:id(.:format)                     saas_admin/films#show
                                    PATCH    /admin/content/studios/:studio_id/films/:id(.:format)                     saas_admin/films#update
                                    PUT      /admin/content/studios/:studio_id/films/:id(.:format)                     saas_admin/films#update
                                    DELETE   /admin/content/studios/:studio_id/films/:id(.:format)                     saas_admin/films#destroy
                 saas_admin_studios GET      /admin/content/studios(.:format)                                          saas_admin/studios#index
                                    POST     /admin/content/studios(.:format)                                          saas_admin/studios#create
              new_saas_admin_studio GET      /admin/content/studios/new(.:format)                                      saas_admin/studios#new
             edit_saas_admin_studio GET      /admin/content/studios/:id/edit(.:format)                                 saas_admin/studios#edit
                  saas_admin_studio GET      /admin/content/studios/:id(.:format)                                      saas_admin/studios#show
                                    PATCH    /admin/content/studios/:id(.:format)                                      saas_admin/studios#update
                                    PUT      /admin/content/studios/:id(.:format)                                      saas_admin/studios#update
                                    DELETE   /admin/content/studios/:id(.:format)                                      saas_admin/studios#destroy
<%= link_to @clip.film.name, saas_admin_studio_film_path(@clip.film.studio, @clip.film) %>
<%= link_to @clip.name, saas_admin_studio_film_clips_path(@clip.film.studio ,@clip.film) %>