Rails - 渲染扬声器显示模态内的页面

时间:2013-11-23 21:34:48

标签: ruby-on-rails ruby-on-rails-3 heroku

我在活动节目页面上有一个活动网站,上面有发言人名单,我希望每个发言者都有一个指向发言人展示页面的链接。

我不确定link_to方法应该是什么,这是我到目前为止所拥有的 -

视图

  <% @event.speakers.append(nil).each_slice(6) do |speaker_block| %>
    <div class="rowOfSpeakers row">
      <% speaker_block.each_with_index do |speaker, index| %>
        <div class="twocol<%= " last" if index == 5 || index == 11 %>">
         <div>
           <div class="speakerTwitter">
            <%= link_to speaker.twitter, "http://twitter.com/#{speaker.twitter}" %>
           </div>
           <img src="<%= speaker.avatar %>" alt="<%= speaker.name %>">
         </div>

         <!-- Heres my link -->
         <h3><%= link_to speaker.name, event_speaker_path(@speaker) %></h3>

       </div>
      <% end %>
    </div>
  <% end %>

上述链接导致以下错误

  No route matches {:action=>"show", :controller=>"speakers", :event_id=>nil}

控制器

  def show
     @speaker = Speaker.find(params[:id])
  end

路线

  resources :events do
    resources :leads, path: "download", only: [:new, :create]
    resources :registrations, path: "register", only: [:new, :create, :index]
    resources :speakers, only: [:show]
  end

2 个答案:

答案 0 :(得分:1)

<%= link_to speaker.name, event_speaker_path(@event, speaker) %>

您引用@speaker这是一个nil变量(即它不存在)。查看您的each_with_index阻止。

此外,由于它是嵌套路线,因此您需要指定“父”,在本例中为@event

答案 1 :(得分:0)

要链接到'speakers#show',您可以使用speaker_path(@speaker)。如果您不确定,可以随时运行rake routes查看应用程序中可用的所有路径。