1

我真的是 Ruby on Rails 的新手......我正在尝试链接到我项目中的另一个页面,其中列出了属于 escuela 的帖子。

这就是我所做的:

在 posts_controller.rb 我写道:

def postesc
    @posts = Post.where(:escuela_id => params[:id])
    respond_to do |format|
      format.html # postesc.html.erb
      format.json { render json: @posts }
    end
  end

在 config/routes.rb 我写道:

match 'postesc' => 'posts#postesc'

在 view/escuelas/listaesc.html.erb 我写了链接:

<%= link_to "Escuelas", :controller => "posts", :action => "postesc" %>

在 view/escuelas/postesc.html.erb 我想列出匹配的帖子。但是这个页面看起来只是空白,只有布局。

请帮忙?

4

3 回答 3

2

先把 post 和 escuela 关联起来,然后通过

Escuela.find(params[:id]).posts  

将您的路线更改为 -

resources :posts do
  get 'postesc', :on => :collection
end  

看法 :

<%= link_to "List posts", postesc_posts_path %>
于 2012-10-26T11:21:32.043 回答
0

您缺少为要选择的 Escuela 添加一个 ID - 正如您在 Controller#postesc 操作中所做的那样(如文字:其中:escuela_id => params[:id])。

<%= link_to "Escuela", :controller => "posts", :action => "postesc", :id => 1 %>

但是您可以使用以下语法使用对象链接方法(通过稍微更改路线):

# in routes.rb
match 'postesc' => 'posts#postesc', on: :collection, as: 'esc_index'

# in your view
<%- for escuela in @escuelas do %>
  <%= link_to "Escuela", esc_index(escueal) %>
<% end %>
于 2012-10-26T11:20:17.650 回答
0

将 routes.rb 更改为

得到'postesc' =>'posts#postesc'

试试...<%= link_to "Escuelas", postesc_path %>

或者

 <%= link_to "Escuelas", { :controller => "posts", :action => "postesc" } %>
于 2012-10-26T11:17:46.673 回答