Skip to content

Commit

Permalink
nested resources
Browse files Browse the repository at this point in the history
  • Loading branch information
yshmarov committed Oct 17, 2021
1 parent 061a40b commit 9885432
Show file tree
Hide file tree
Showing 14 changed files with 46 additions and 40 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
class MessagesController < ApplicationController
class Inboxes::MessagesController < ApplicationController
before_action :set_inbox
before_action :set_message, only: %i[ show edit update destroy ]

# GET /messages or /messages.json
def index
@messages = Message.all
# @messages = Message.all
@messages = @inbox.messages
end

# GET /messages/1 or /messages/1.json
Expand All @@ -12,7 +14,8 @@ def show

# GET /messages/new
def new
@message = Message.new
@message = @inbox.messages.build
# @message = Message.new
end

# GET /messages/1/edit
Expand All @@ -21,11 +24,12 @@ def edit

# POST /messages or /messages.json
def create
@message = Message.new(message_params)
# @message = Message.new(message_params)
@message = @inbox.messages.build(message_params)

respond_to do |format|
if @message.save
format.html { redirect_to @message, notice: "Message was successfully created." }
format.html { redirect_to [@inbox, @message], notice: "Message was successfully created." }
format.json { render :show, status: :created, location: @message }
else
format.html { render :new, status: :unprocessable_entity }
Expand All @@ -38,7 +42,7 @@ def create
def update
respond_to do |format|
if @message.update(message_params)
format.html { redirect_to @message, notice: "Message was successfully updated." }
format.html { redirect_to [@inbox, @message], notice: "Message was successfully updated." }
format.json { render :show, status: :ok, location: @message }
else
format.html { render :edit, status: :unprocessable_entity }
Expand All @@ -51,19 +55,23 @@ def update
def destroy
@message.destroy
respond_to do |format|
format.html { redirect_to messages_url, notice: "Message was successfully destroyed." }
format.html { redirect_to [@inbox, :messages], notice: "Message was successfully destroyed." }
format.json { head :no_content }
end
end

private
def set_inbox
@inbox = Inbox.find(params[:inbox_id])
end
# Use callbacks to share common setup or constraints between actions.
def set_message
@message = Message.find(params[:id])
# @message = Message.find(params[:id])
@message = @inbox.messages.find(params[:id])
end

# Only allow a list of trusted parameters through.
def message_params
params.require(:message).permit(:title, :inbox_id)
params.require(:message).permit(:title)
end
end
2 changes: 2 additions & 0 deletions app/models/inbox.rb
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
class Inbox < ApplicationRecord
validates :title, presence: true
has_many :messages, dependent: :destroy
end
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<%= form_with(model: message) do |form| %>
<%= form_with(model: [@inbox, message]) do |form| %>
<% if message.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(message.errors.count, "error") %> prohibited this message from being saved:</h2>
Expand All @@ -16,11 +16,6 @@
<%= form.text_field :title %>
</div>

<div class="field">
<%= form.label :inbox_id %>
<%= form.text_field :inbox_id %>
</div>

<div class="actions">
<%= form.submit %>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@
</p>

<p>
<%= link_to "Show this message", message %>
<%= link_to "Show this message", [@inbox, message] %>
</p>
</div>
File renamed without changes.
10 changes: 10 additions & 0 deletions app/views/inboxes/messages/edit.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<h1>Editing message</h1>

<%= render "form", message: @message %>

<br>

<div>
<%= link_to "Show this message", [@inbox, @message] %> |
<%= link_to "Back to messages", inbox_messages_path(@inbox) %>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
<%= render @messages %>
</div>

<%= link_to "New message", new_message_path %>
<%= link_to "New message", new_inbox_message_path %>
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
<br>

<div>
<%= link_to "Back to messages", messages_path %>
<%= link_to "Back to messages", inbox_messages_path(@inbox) %>
</div>
10 changes: 10 additions & 0 deletions app/views/inboxes/messages/show.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<p id="notice"><%= notice %></p>

<%= render @message %>

<div>
<%= link_to "Edit this message", edit_inbox_message_path([@inbox, @message]) %> |
<%= link_to "Back to messages", [@inbox, :messages] %>
<%= button_to "Destroy this message", [@inbox, @message], method: :delete %>
</div>
File renamed without changes.
10 changes: 0 additions & 10 deletions app/views/messages/edit.html.erb

This file was deleted.

10 changes: 0 additions & 10 deletions app/views/messages/show.html.erb

This file was deleted.

5 changes: 3 additions & 2 deletions config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
Rails.application.routes.draw do
resources :messages
resources :inboxes
resources :inboxes do
resources :messages, module: :inboxes
end
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html

# Almost every application defines a route for the root path ("/") at the top of this file.
Expand Down

0 comments on commit 9885432

Please sign in to comment.