首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >链接时缺少必需的键

链接时缺少必需的键
EN

Stack Overflow用户
提问于 2014-09-14 17:03:20
回答 1查看 314关注 0票数 1

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

在管理后端,我希望允许管理员选择一个剪辑并选择一个日期范围,然后当他们单击filter时,它将显示在给定范围内查看该剪辑的所有用户。

我有一个表格格式的工作,然而,我不能显示一个链接到实际的电影或剪辑,我能够显示一个链接到工作室与np。

我做错了什么?

代码语言:javascript
运行
复制
<% 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 -%>

错误#1

代码语言:javascript
运行
复制
ActionController::UrlGenerationError in SaasAdmin::Statistics#search
Showing /Users/me/Sites/multi/app/views/saas_admin/statistics/index.html.erb where line #58 raised:

No route matches {:action=>"show", :controller=>"saas_admin/films", :format=>nil, :id=>nil, :studio_id=>#<Film id: 5, name: "blab", sort_name: "blab", description: "<p>bla</p>", short_description: "bla", meta_data: "bla", studio_id: 4, active: true, trackable: true, regions: nil, created_at: "2014-07-25 01:21:48", updated_at: "2014-07-25 01:21:48", poster_file_name: "ABeautifulMind-ManySolutions.png", poster_content_type: "image/png", poster_file_size: 331462, poster_updated_at: "2014-07-25 01:21:46", permalink: "blab", amazon_link: "">} missing required keys: [:id]

错误#2

代码语言:javascript
运行
复制
    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]

我做错了什么?

谢谢!

编辑:

Studio.rb:

代码语言:javascript
运行
复制
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

Film.rb:

代码语言:javascript
运行
复制
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

Clip.rb:

代码语言:javascript
运行
复制
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

编辑2:

路线:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-14 17:31:42

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

缺少所需密钥::id 缺少所需密钥::film_id

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

代码语言:javascript
运行
复制
<%= 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) %>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25835772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档