从另一个控制器渲染显示视图

时间:2018-01-22 01:21:56

标签: ruby-on-rails feed

我已经预览了所有类似主题的问题,这些解决方案都没有帮助我。我正在尝试创建一个类似于Twitter的推文,它将在rails中显示某个类别的帖子。 这是我的行业控制人员:

class IndustriesController < ApplicationController

  def index
    @wads = Wad.order('created_at DESC')
  end

  def music
    @music_wads = Wad.where(category: "Music").paginate(page: params[:page], per_page: 20)
    @wad = @music_wads.pluck(:id)
  end
end 

这是我的帖子控制器的一部分:

class WadsController < ApplicationController
    before_action :find_wad, only: [:show, :edit, :update, :destroy]

    def index
        @wads = Wad.all
    end

    def show
        @wad = Wad.find(params[:id])
    end

    def new
        @wad = Wad.new
    end


    def create
        @wad = current_user.wads.build(wad_params)
        if @wad.save    
          redirect_to @wad
        else
          flash[:error] = 'Error try again'
          render 'new'
        end
    end
end 

这是我对行业控制人员的展示视图:

<h1>Music Wads</h1>

<%= will_paginate @music_wads %>

<% @music_wads.each do |music_wad| %>
    <%= link_to 'wads/:id' do %>
    <div class="flex-rectangle">
        <%= music_wad.user.name  %>
        <%= music_wad.short_form %>
    <% end %>
    </div>
<%= will_paginate @music_wads %>
<% end %>

这是我的路线档案:

Rails.application.routes.draw do

  root   'static_pages#home'
  get    '/help',    to: 'static_pages#help'
  get    '/about',   to: 'static_pages#about'
  get    '/contact', to: 'static_pages#contact'
  get    '/signup',  to: 'users#new'
  get    '/login',   to: 'sessions#new'
  post   '/login',   to: 'sessions#create'
  delete '/logout',  to: 'sessions#destroy'
  get    '/industries', to: 'industries#index'
  get    '/music',    to:  'industries#music'
  get    '/tech',     to:  'industries#tech'


  resources :users
  resources :account_activations, only: [:edit]
  resources :password_resets,     only: [:new, :create, :edit, :update]
  resources :wads 
end

我试图这样做,以便点击帖子列表中的帖子将您带到该帖子的页面(/ wads / id)。我整天都感到困惑,现在我的智慧结束了。我知道我是一个菜鸟,这是一个不起眼的问题,但任何帮助都会很高兴得到赞赏。 感谢

1 个答案:

答案 0 :(得分:0)

resources :wads将创建一些您可以使用的路线。

在控制台中运行rails routes(在轨道5上)或rake routes(在轨道4及以下)将为您提供路线列表。

prefix列下,您可以找到应使用的正确路线名称,在URI Pattern下,您可以看到它链接到的实际地址。

您要求wads/:id,因此链接应为<%= link_to wad_path(wad_music) do %>(前缀为wad_path,您需要为其提供包含id的对象 - 或ID ...)

由于你想链接到一个单一的动作 - 意味着动作将获得一个对象的id和id - 并获得它(获得一个对象!),链接前缀也将是单数形式:{{1}而不是wad_path

wads_path将链接到控制器中的wads_path操作,并且不需要获取任何对象或ID)