Kellogs
Kellogs

Reputation: 471

Rails: Routing Issue, Button to Bring up partial

I have a school page that has tabs when clicked upon are suppose to bring up microposts. The issue is I don't think I am routing it correctly and I feel like an idiot trying to figure this out and not succeeding. If anyone has suggestions please feel free to help me out! Thank you so much!

Routes.rb

get "/schools/:id/mostrecent_schools" => "users#microposts", :as => "mostrecent_schools"

School Controller

  def mostrecent
    @school = School.find_by_slug(request.referer.gsub('http://localhost:3000/','')).id
    @microposts = @user.microposts.paginate(:per_page => 10, :page => params[:page])
     respond_to do |format|
      format.html
      format.js
     end
  end

Tab HTML

li class='StreamTab StreamTabRecent active'>
<%= link_to 'Most Recent', mostrecent_schools_path, :remote => true, :class => 'TabText' %>
</li>

<div id='ContentBody'>
<div id='ajax'></div>
<%= render 'users/microposts', :microposts => @microposts %>
</div>

mostrecent.js

$("#ajax").hide();
$("#ContentBody").html('<%= escape_javascript(render :partial => "users/microposts" )%>');

EDIT *Routes.rb*

Projects::Application.routes.draw do
  resources :pages
  resources :application
  resources :schools
  resources :microposts
  resources :comments
  resources :users
  resources :sessions
  resources :password_resets
  resources :relationships, only: [:create, :destroy]
  resources :users do
      member do
        get :following, :followers
      end
  end
  resources :microposts do
    member do
      post :vote_up, :unvote
    end
  end
  resources :microposts do
    member do
      post :upview
    end
  end
  resources :microposts do
    resources :comments
  end

  get "schools/:page/mostrecent" => "schools#mostrecent", :as => "mostrecent_schools" 

  root to: "pages#index"

Upvotes: 0

Views: 228

Answers (1)

nightf0x
nightf0x

Reputation: 2041

From what I can understand, Your routes.rb should look something like this

My final try

Change your routes.rb to this

get "schools/mostrecent/new/:page" => "schools#mostrecent", :as => "mostrecent_schools"

and in your controller edit this line. If this dosen't work then i give up

@school = School.find_by_slug(request.referer.gsub('http://localhost:3000/','')).params[:page]

Although this is not the restful way of doing stuff and as far as I know since users belong to schools and microposts belong to users you shouldn't define schools microposts and users as simple :resources.

Refer to [Rails Routing Guide ](Refer to http://guides.rubyonrails.org/routing.html)for more details.

Upvotes: 2

Related Questions