【问题标题】:Rails - Render speakers show page inside modalRails - 在模态中渲染扬声器显示页面
【发布时间】:2013-11-23 21:34:47
【问题描述】:

我有一个活动网站,在活动展示页面上有一个演讲者列表,我希望每个演讲者都有一个指向演讲者展示页面的链接。

我不确定 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

【问题讨论】:

  • 在这种情况下,发布您的路线配置可能会很有用。

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


【解决方案1】:

&lt;%= link_to speaker.name, event_speaker_path(@event, speaker) %&gt;

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

另外,因为它是一个嵌套路由,你需要指定“父”,在这种情况下,@event

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我跑了 rake 路线来获得上述路线。扬声器与事件相关联。一个事件 has_and_belongs_to_many :speakers。演讲者 has_and_belongs_to_many :events
    猜你喜欢
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    相关资源
    最近更新 更多