create @ PanelsController

作成

url

リクエスト

認証ユーザ
権限作家
methodpost
urlパラメータなし
POSTデータjson形式またはフォームで
html
json
jsonp×

解説

PanelsNewフォームからコマを新規作成するための機能。

  • セッションまたは認証トークンからユーザアカウントを特定する。
  • ユーザアカウントから作家を取得する。
  • コマオブジェクトを新規に興す。
  • コマにデフォルト値補充を依頼する。
  • POSTデータを展開する。
    • panelが設定されているなら、それを優先して採用する。
    • jsonだけなら、それをパースしてから採用する。
  • panelモデルにデータの検証と保存を依頼する。
    • 展開したデータと作家アカウントを渡す。
  • 作業結果をクライアントに戻す。

urlパラメータ

なし

POSTデータ

おかしな話だが、jsonAPIではpanelで渡し、フォームではjsonで渡す。

panel

通常はpanelで与える。

json

フォームを使った送信は関連モデルのネスト表現で難儀があるので、抜け道的にjson文字列で受け取れるようにもしてある。

auth_token

  • jsonで要求する場合、認証処置として認証トークンが必要。

戻り値

正常系

  • htmlのとき、ステータスコード302 Foundとともに、作成されたコマの閲覧(Show)ページに遷移する。
  • jsonのとき、ステータスコード200 OKとともに、json構造のデータを返す。
  • jsonのとき、ステータスコード200 OKとともに、json構造のデータを返す。
    • 出力フォーマットはコマモデルのjson単体出力オプションに従う

参考:

例外系

  • ユーザアカウントでサインインしてなかった。(Devise)
    • htmlなら、ステータスコード302 Foundとともに、サインインを促すページ(/users/sign_in)へ遷移する。
    • jsonなら、ステータスコード401 Unauthorizedとともに、応答メッセージにUnauthorizedを返す。
  • 作家登録してなかった。
    • htmlなら、ステータスコード302 Foundを返すとともに、作家登録を促すページ(/authors/new)へ遷移する。
    • jsonなら、ステータスコード401 Unauthorizedを返すとともに、応答メッセージにUnauthorizedを返す。
  • 検証、保存に失敗した
    • htmlなら、ステータスコード200 OKとともに、新規ページを描画する。
      • パラメータで渡されたコミックデータを入力フォームに保持している。
    • jsonなら、ステータスコード422 unprocessable_entityを返す。