2016-09-20 5 views
1

카테고리에 속한 포럼 모델을 만들었으며 모든 카테고리의보기에서 해당 카테고리의 각 포럼을 표시해야하지만 링크가 잘못된 경로를 가리키고 있습니다 (예 : 카테고리 4에서는 카테고리/1/포럼/1을 가리키는 포럼과 카테고리 1이 존재하지 않음).레일스가 잘못된 포럼 경로를 보여줍니다

참고 : 각 카테고리는 위치 필드 (정수)를 가지며 해당 필드가 오름차순으로 정렬됩니다. 카테고리 4는 위치 1을 가지고 있지만 그 번호가 URL의 카테고리 ID 대신 있어야하는 이유는 무엇입니까? 내가 액세스/카테고리/4/포럼/1 때

나는 오류가

CategoriesController

class CategoriesController < ApplicationController 

    def index 
     categories_ordered 
    end 

    def new 
     @category = Category.new 
     categories_ordered 
    end 

    def create 
     @category = Category.new(category_params) 
     categories_ordered 
     if @category.save 
      redirect_to forums_path, notice: "Kategorija je uspešno kreirana." 
     else 
      render "new" 
     end 
    end 

    def show 
     find_category 
     find_forums 
    end 

    def edit 
     find_category 
    end 

    def update 
     find_category 

     if @category.update(category_params) 
      redirect_to category_path(@category), notice: "Kategorija je uspešno ažurirana." 
     else 
      render "edit" 
     end 
    end 

    def destroy 
     find_category 
     @category.destroy 

     redirect_to forums_path, notice: "Kategorija je uspešno obrisana." 
    end 

    private 

    def category_params 
     params.require(:category).permit(:name, :description, :position) 
    end 

    def find_category 
     @category = Category.find(params[:id]) 
    end 

    def find_forums 
     @forums = @category.forums.all 
    end 

    def categories_ordered 
     @categories = Category.all.order("position ASC") 
    end 

end 

ForumsController " 'ID'= 1 종류를 찾을 수 없습니다"얻을

class ForumsController < ApplicationController 

    def new 
     find_category 
     @forum = @category.forums.new 
    end 

    def create 
     @category = Category.find(params[:category_id]) 
     @forum = @category.forums.create(forum_params) 
     if @forum.save 
      redirect_to category_path(@category), notice: "Forum je uspešno kreiran." 
     else 
      render "new" 
     end 
    end 

    def show 
     find_category 
     find_forum 
    end 

    def edit 
     find_category 
     find_forum 
    end 

    def update 
     find_category 
     find_forum 
     if @forum.update(forum_params) 
      redirect_to forum_path(@forum), notice: "Forum je uspešno ažuriran." 
     else 
      render "edit" 
     end 
    end 

    private 

    def forum_params 
     params.require(:forum).permit(:title, :description) 
    end 

    def find_category 
     @category = Category.find(params[:category_id]) 
    end 

    def find_forum 
     @forum = @category.forums.find(params[:id]) 
    end 

end 

카테고리 #은을 보여

<% authorize %> 

<h2><%= @category.name %></h2> 

<p><%= @category.description %></p> 

<div class="list-group"> 
    <% @category.forums.each do |f| %> 
     <a href="<%= forum_path(f) %>" class="list-group-item"> 
      <h4 class="list-group-heading"><%= f.title %></h4> 
      <p class="list-group-text"> 
       <%= f.description %> 
      </p> 
     </a> 
    <% end %> 
</div> 

<% if is_admin? %> 

    <%= link_to new_forum_path, class: "btn btn-primary" do %> 
     <span class="glyphicon glyphicon-plus"></span> Dodaj forum 
    <% end %> 

    <%= link_to edit_category_path(@category), class: "btn btn-primary" do %> 
     <span class="glyphicon glyphicon-pencil"></span> Izmeni 
    <% end %> 

    <%= link_to category_path(@category), class: "btn btn-danger", method: :delete, data: { confirm: "Da li ste sigurni da želite obrisati ovu kategoriju?" } do %> 
     <span class="glyphicon glyphicon-trash"></span> Obriši 
    <% end %> 

<% end %> 

routes.rb

Rails.application.routes.draw do 

    root "welcome#index" 

    get "start" => "welcome#index", as: "index" 
    get "registration" => "users#new", as: "register" 
    get "login" => "sessions#new", as: "login" 
    post "login" => "sessions#create" 
    get "logout" => "sessions#destroy", as: "logout" 
    get "users" => "users#index", as: "users" 
    post "users" => "users#create" 
    get "profile" => "users#show", as: "profile" 
    get "user/:id" => "users#show", as: "user" 
    get "user/:id/edit" => "users#edit", as: "edit_user" 
    patch "user/:id" => "users#update" 
    delete "user/:id" => "users#destroy" 

    get "categories/add" => "categories#new", as: "new_category" 
    get "category/:id" => "categories#show", as: "category" 
    patch "category/:id" => "categories#update" 
    delete "category/:id" => "categories#destroy" 
    get "category/:id/edit" => "categories#edit", as: "edit_category" 

    get "terms" => "welcome#terms", as: "terms" 
    get "wh" => "bugs#new", as: "wh" 

    get "bugs" => "bugs#index", as: "bugs" 
    post "bugs" => "bugs#create" 
    get "bug/:id" => "bugs#show", as: "bug" 
    delete "bug/:id" => "bugs#destroy" 

    get "forum" => "categories#index", as: "forums" 
    get "category/:category_id/forum/add" => "forums#new", as: "new_forum" 
    get "category/:category_id/forum/:id" => "forums#show", as: "forum" 
    get "category/:category_id/forum/:id/edit" => "forums#edit", as: "edit_forum" 
    patch "category/:category_id/forum/:id" => "forums#update" 
    delete "category/:category_id/forum/:id" => "forums#destroy" 

    resources :users 
    resources :sessions 

    resources :categories do 
    resources :forums 
    end 

    resources :bugs 
    # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 
end 
+0

routes.rb 파일을 확인 했습니까 ?? config/routes.rb도 게시하십시오. –

+0

@ChetanDatta 게시하기. – Nikola

답변

0

오류 부분적으로 해결된다; 카테고리의 경우 ForumsController (category_id 및 포럼의 경우 id) 매개 변수를 사용해야했습니다.

def find_category 
    @category = Category.find(params[:category_id]) 
end 

def find_forum 
    @forum = @category.forum.find(params[:id]) 
end 

포럼 경로를 적절하게 변경하십시오.

여전히 문제는 해결되지 않은 것처럼 보입니다. 이 부분을 변경했지만 URL에 여전히 문제가 있습니다. 이제 카테고리 및 포럼 ID가 /카테고리/4/포럼/1 대신 /카테고리/1/포럼/4으로 표시되는 대신 URL에 혼합됩니다.

편집 : 마지막으로 문제가 해결되었습니다. This answer는 내가 무엇을해야하는지에 관해 나에게 줬다. 경로를 사용하여 @category도 지정해야합니다 (두 줄만 변경).

<div class="list-group"> 
    <% @category.forums.each do |f| %> 
     <a href="<%= forum_path(@category, f) %>" class="list-group-item"> 
      <h4 class="list-group-heading"><%= f.title %></h4> 
      <p class="list-group-text"> 
       <%= f.description %> 
      </p> 
     </a> 
    <% end %> 
</div> 

<% if is_admin? %> 

    <%= link_to new_forum_path(@category), class: "btn btn-primary" do %> 
     <span class="glyphicon glyphicon-plus"></span> Dodaj forum 
    <% end %> 
관련 문제