2016-01-12 46 views
0

我有三種型號,Subscription,ShowEpisodeSubscription的作用是解析飼料在其:url列並實例化ShowEpisode,用Feedjira屬性填充它們的列。如何在我的創建方法中將實例放在頁面上而不訪問參數?

我只能在訪問shows/1/episodes/1時使用中的<%= render @show.episodes %>顯示視圖不起作用,並且不會給出任何錯誤。

在Rails入門指南中,他們使用這個作爲他們的Comment創建方法,允許這樣做。

@article = Article.find(params[:article_id]) 
@comment = @article.comments.create(comment_params) 
redirect_to article_path(@article) 

是否缺乏參數導致這種情況?如果是這樣,我將如何使用這個方法中的參數?

def create 
    @subscription = Subscription.new(subscription_params) 
    if @subscription.save 
     @show = Show.new 
     @episodes = [] 

     # Feed 
     @feed = Feedjira::Feed.fetch_and_parse @subscription.url 

     # Show 
     @show.title = @feed.title 
     @show.description = @feed.description 
     @show.genre = @feed.itunes_categories 
     @show.url = @feed.url 
     @show.logo = @feed.itunes_image 

     @show.save 

     # Episode 
     @feed.entries.each do |item| 
      @episodes.push(item) 
     end 

     @episodes.each do |item| 
      @episode = @show.episodes.create 

      @episode.title = item.title 
      @episode.description = item.summary 
      @episode.release_date = item.published 
      @episode.show_id = @show 

      @episode.save 
     end 
     redirect_to @subscription 
    end 
end 

episodes/_episode.hmtl.erb

<ul> 
    <li> 
     <%= episode.title %> 
    </li> 
    <li> 
     <%= episode.description %> 
    </li> 
    <li> 
     <%= episode.url %> 
    </li> 
    <li> 
     <%= episode.release_date %> 
    </li> 
    <li> 
     <%= episode.show_id %> 
    </li> 
</ul> 

shows/show.html.erb

<h1>Showing Show</h1> 

<h2><%= @show.title %></h2> 

<%= render @show.episodes %> 

添加我的路線和模式的情況下,這是個問題:

routes.rb

Rails.application.routes.draw do 
    resources :shows do 
    resources :episodes 
    end 
    resources :subscriptions 
    root 'subscriptions#index' 
end 

show.rb

class Show < ActiveRecord::Base 
    has_many :episodes, dependent: :destroy 
end 

episode.rb

class Episode < ActiveRecord::Base 
    belongs_to :show 
end 

subscription.rb

class Subscription < ActiveRecord::Base 
    validates :url, uniqueness: true 
end 

回答

0

看來你需要只是改變

<%= render @show.episodes %> 

<%= render partial: "episodes/episode", collection: @show.episodes %> 

http://guides.rubyonrails.org/action_view_overview.html#partials

而且小編建議:不要把你的邏輯控制器。

+0

不幸的是,這不起作用。在入門指南中,他們只使用了「<%= render @ article.comments%>」,這是否啓用了該功能? RE:我的控制器邏輯,有一天我得到了相反的建議。我是編程新手,所以我不知道該相信誰... http://stackoverflow.com/a/34701029/5741622 – Jane

相關問題