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

ルート.rbを次のように変更します

get'postesc' =>'posts#postesc'

試してください...<%= link_to "Escuelas"、postesc_path%>

また

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

選択する Escuela の ID を追加する必要がありません - Controller#postesc アクションで行っているように (言葉: where: escuela_id => params[:id])。

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

ただし、次の構文を使用して object-link メソッドを使用できます (ルートを少し変更することにより)。

# 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 に答える