Ruby on Rails 3 チュートリアルを終了しました。最終章は非常に複雑です。本全体のチュートリアルは基本的に、ユーザーがマイクロポストを投稿できるサイトを作成します。また、各ユーザーは他のユーザーをフォローでき、次のユーザーのマイクロポストが元のユーザーのマイクロポスト フィードに表示されます。
私の質問は、RelationshipsController 内の create アクションの params 変数に 2 次元配列が含まれている理由に関するものです。
これがコードです。
ユーザー
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation
has_secure_password
has_many :microposts, dependent: :destroy
has_many :relationships, foreign_key: "follower_id", dependent: :destroy
has_many :followed_users, through: :relationships, source: :followed
has_many :reverse_relationships, foreign_key: "followed_id",
class_name: "Relationship", dependent: :destroy
has_many :followers, through: :reverse_relationships, source: :follower
end
マイクロポスト
class Micropost < ActiveRecord::Base
attr_accessible :content
belongs_to :user
end
関係
class Relationship < ActiveRecord::Base
attr_accessible :followed_id
belongs_to :follower, class_name: "User"
belongs_to :followed, class_name: "User"
end
これは、2 次元の params 変数を作成するコードだと思います (しかし、なぜでしょうか?)
<%= form_for(current_user.relationships.build(followed_id: @user.id), remote: true) do
|f| %>
<div><%= f.hidden_field :followed_id %></div>
<%= f.submit "Follow", class: "btn btn-large btn-primary" %>
<% end %>
リレーションシップコントローラー
class RelationshipsController < ApplicationController
def create
@user = User.find(params[:relationship][:followed_id])
current_user.follow!(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end
end
自分の質問に答えただけかもしれませんが、params 変数の 2 次元配列は見たことがありません。誰かがこれに光を当てることができますか?
ああ、多分私もroutes.rbファイルを投稿する必要があります:
SampleApp::Application.routes.draw do
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]
root to: 'static_pages#home'
end
ありがとう、マイク