1

私は Rails 3 チュートリアルに従いましたが、これを正しく機能させようとしています。

ユーザーが作成したすべてのマイクロポストが一覧表示されますhttp://localhost:3000/users/username

ユーザーコントローラー

def show
    @user = User.find(params[:id])
    @microposts = @user.microposts.paginate page: params[:page], :per_page => 15
    end

各マイクロポストには ID があります

create_table "microposts", :force => true do |t|
    t.text     "content"
    t.integer  "user_id"
    t.datetime "created_at",                         :null => false
    t.datetime "updated_at",                         :null => false
    t.string   "image"
    t.text     "comment_content"
  end

http://localhost:3000/users/username/micropost_id(有効な場合)のようなリンクがそのマイクロポストだけを持つページにつながるように設定するにはどうすればよいですか?

新しいページに個別に表示されることを除いて、表示をまったく同じにしたい。

ユーザー テーブル

create_table "users", :force => true do |t|
    t.string    "name"
    t.string    "email"
    t.timestamp "created_at",                         :null => false
    t.timestamp "updated_at",                         :null => false
    t.string    "password_digest"
    t.string    "remember_token"
  end

私の設定ルート

MyApp::Application.routes.draw do
  resources :authentications

resources :microposts, :path => "posts"


root to: 'static_pages#home'

            ActiveAdmin.routes(self)


  resources :users do
    member do
      get :following, :followers
    end
  end
  resources :sessions, only: [:new, :create, :destroy]
  resources :microposts, only: [:create, :destroy]
  resources :relationships, only: [:create, :destroy]
  resources :microposts do
  resources :postcomments

end


  match '/signup',   to: 'users#new'
  match '/signin',   to: 'sessions#new'
  match '/signout',  to: 'sessions#destroy', via: :delete

  match '/post',    to: 'static_pages#post'
  match '/about',   to: 'static_pages#about'
  match '/contact', to: 'static_pages#contact'
  match '/users/:username/:id', to: 'microposts#show', via: :get, as: :user_micropost
end
4

2 に答える 2

0

次のように、routes.rb ファイルに新しいルートを追加する必要があります。

match '/users/:username/:id', to 'microposts#show', via: :get, as: :user_micropost

ユーザーのマイクロポストを表示するページに、次のようにリンクを追加します。

<a href="<%= user_micropost_path(username: @user.username, id: micropost.id) %>">Whatever..</a>

マイクロポスト コントローラーで、メソッド show を追加します。

def show
  @user = User.find_by_username(params[:username])
  @post = Post.find_by_id(params[:id])
  # handle any errors from the code above
end

そして下に作成します

app/views/microposts/show.html.erb

マイクロポストを表示する新しいページ。

于 2013-04-17T21:02:52.697 に答える