2016-05-17 6 views
-1

Ich verstehe sorta, warum meine reviser Indexseite nicht auftaucht, aber ich weiß nicht, wie ich darüber gehen soll. In meinen Rake-Routen gibt es keinen Reviser # Index, obwohl ich einen def index auf meinem Controller gemacht habe. Ich habe eine Beziehung zwischen einer user und reviser, wie eine user gelten kann, um eine reviser werden. Dies ist die URL, um einen bestimmten Überprüfer anzuzeigen http://localhost:3000/users/15/reviser aber ich möchte auch, dass es eine Möglichkeit gibt, Ihr Profil zu sehen, als ob Sie der aktuelle Benutzer sind. Deshalb habe ich einen Index eingerichtet. Ich möchte also eine URL, die nur meinen aktuellen Benutzer als Überprüfer zeigt, basierend auf meinem Index ex. http://localhost:3000/users/reviser oder http://localhost:3000/reviser Wie kann ich meine Indexseite als aktuelle Benutzerseite anzeigen lassen? Um es zusammenzufassen: Mein ReviserController Index wird nicht in Routen angezeigt. Want URL http://localhost:3000/reviser für current_user sein. Vielen Dank!Meine Indexansicht existiert nicht auf Raketrouten

ReviserController:

class RevisersController < ApplicationController 

before_action :set_reviser, only: [:show, :edit, :update] 
before_action :authenticate_user!, except: [:show] 

    def index 
    @reviser = current_user.reviser 
    end 

    def show 

    end 

    def new 
    @reviser = current_user.build_reviser(params[:reviser]) 
    @user = User.find(params[:user_id]) 
    end 

    def create 
    @reviser = current_user.reviser.build(reviser_params) 

    if @reviser.save 
     redirect_to @reviser,notice: "saved...." 
    else 
     render :new 
    end 
    end 

    def edit 
    set_reviser 
    end 

    def update 
    set_reviser 
    if @reviser.update(reviser_params) 
     redirect_to @reviser,notice: "updated.." 
    else 
     render :edit 
    end 
    end 

private 
def set_reviser 
    @reviser = current_user.reviser 
end 

    def reviser_params 
    params.require(:reviser).permit(:description, :average_start, :average_end, :max_pages, :price_per, :active) 
end 
end 

index.html

<div class="row"> 
 
\t <div class="col-md-3"> 
 
\t \t <ul class="sidebar-list"> 
 
\t \t \t <li class="sidebar-item"><%= link_to "Your Reviser Profile", reviser_path, class: "sidebar-list active" %></li> 
 
\t \t \t <li class="sidebar-item"><%= link_to "Your Essays", reviser_path, class: "sidebar-list active" %></li> 
 
\t \t </ul> 
 
\t </div> \t 
 
\t <div class="col-md-9"> 
 
\t \t <div class="panel panel-default"> 
 
\t \t \t <div class="panel-heading"> 
 
\t \t \t \t Reviser 
 
\t \t \t </div> 
 
\t \t \t <div class="panel-body"> 
 
\t \t \t <% @reviser.each do |reviser| %> 
 
\t \t \t \t <div class="row"> 
 
\t \t \t \t \t <div class="col-md-2"> 
 
\t \t \t \t \t \t <%= link_to image_tag(current_user.avatar.url(:medium), class:'img-responsive'), user_path(user) %> 
 
\t \t \t \t \t \t 
 
\t \t \t \t \t </div> 
 
\t \t \t \t </div> 
 
\t \t \t <% end %> 
 
\t \t \t </div> 
 
\t \t </div> 
 
\t </div> \t \t 
 
</div>

routes.rb:

resources :users, only: [:index, :show] do 
    resource :reviser 
end 

Rake Routen: (Index für Korrektor zeigen nicht !!!)

  1. user_reviser POST /users/:user_id/reviser(.:format) Korrektoren # erstellen
  2. new_user_reviser GET/users/: user_id/Korrektor/new. (: Format)
  3. edit_user_reviser GET /users/:user_id/reviser/edit(.:format # neue Korrektoren) Korrektoren # bearbeiten
  4. GET/users /: user_id/Korrektor (.: Format) Revisoren # show
  5. PATCH /users/:user_id/reviser(.:format) Revisoren # update
  6. PUT /users/:user_id/reviser(.:format) Korrektoren # update
  7. /users/:user_id/reviser(.:format DELETE) Korrektoren #
  8. Benutzer GET /users(.:format zerstören) Benutzer # Index
  9. Benutzer GET /users/:id(.:format) Benutzer # zeigen
+1

'Ressourcen: revisers' - wenn Sie dies angeben, werden Sie zu sehen bekommen' index' Route – dp7

Antwort

2

wie Sie in the rails route guide singuläre Ressource wie die sehen können Sie eine Index-Methode nicht hinzufügen verwenden.

Sie sollten Ihre routes.rb Datei zu

resources :users, only: [:index, :show] do 
    resources :revisers 
end 
+0

würde dies bedeuten, meine man hat Beziehung funktioniert immer noch ?? –

+0

Natürlich ist es nur die Beziehung zwischen Modellen, während es so aussieht, als ob Sie die Überprüfungsseite mit der Indexaktion anzeigen möchten (seltsam, aber ok, wenn Sie so wollen, dass Sie Webapp verhalten) –

+0

gut der Grund ist, weil dann kann der Überprüfer Links auf der Seite zu seinen eigenen Dingen sehen, und die Show wird für andere Benutzer mit verschiedenen Links auf der Seite sein. Beispiel im Index haben eine Bearbeitungsüberarbeitungsseite. für Schau krank haben mehr Revisoren. –

1

ändern Dies ist, weil Sie es aufgeführt als singuläre Ressource

von http://guides.rubyonrails.org/routing.html#singular-resources

2.5 Singular Resources 
Sometimes, you have a resource that clients always look up without referencing an ID. 
For example, you would like /profile to always show the profile of the currently logged in user. 
In this case, you can use a singular resource to map /profile (rather than /profile/:id) to the show action: 

und es schafft nur die 6 Aktionen, die Sie aufgelistet sehen ..

da es nur 1 Ressource gibt, keinen Sinn, der einen Index zeigt. bewegen Sie einfach Ihre Logik in die show Aktion

def show 
    @reviser = current_user.reviser 
end 

und benennen index.html.erb-show.html.erb

+0

Ich sehe, was Sie sagen, aber ich möchte auch andere Benutzer in der Lage sein, die Revisoren Informationen zu sehen! also würde ich das nur in die Show für die anderen Benutzer setzen, die es ausprobieren wollen !? –

+0

wie in der akzeptierten Antwort angegeben, zeigt dies nur den Revisor für den aktuell ausgewählten Benutzer. Wenn Sie 'GET/users /: user_id/reviser' aufrufen, würden Sie den revisor für den Benutzer mit einer gegebenen user_id anzeigen. Wenn Sie alle Revisoren im System anzeigen möchten, würden Sie dies normalerweise im Index tun (und nicht unter dem Benutzer verschachtelt haben). – Doon

+0

Also andere Benutzer wäre nicht in der Lage, meine Show dann zu sehen .. Gibt es eine Möglichkeit, dass sie das Revisor-Profil noch sehen, und mein Benutzer immer noch in der Lage, seine zu sehen? –

Verwandte Themen