Rails 4 controller actions for fields_for nested resources

Jayway

I am trying to understand Rails' field_for, specifically what should go into the controller for nested resources. My issue is that when I create a comic with comic pages through the Comic form, the page's image are not saved.

I have Users, Comics, and ComicPages. Here are the models:

class User < ActiveRecord::Base
  has_many :comics
  has_many :comic_pages, through: :comics
end

class Comic < ActiveRecord::Base
    belongs_to :user
    has_many :comic_pages, :dependent => :destroy
    accepts_nested_attributes_for :comic_pages
end

class ComicPage < ActiveRecord::Base
    belongs_to :comic
end

Here is the form for Comic, where I also want to add comic_pages:

 <%= form_for ([@user, @comic]) do |f| %>
    <%= f.text_field :title %>
    <%= f.fields_for :comic_pages do |comic_page| %>
        <%= comic_page.file_field :comic_page_image %>
    <% end %>
    <div class="actions">
      <%= f.submit %>
    </div>
  <% end %>

I am confused about the comics_controller (new and create actions). How can I pass comic_page params to this controller???

  def new
    @user = current_user
    @comic = @user.comics.new
    @comic.comic_pages.build
  end

  def create
    @user = current_user
    @comic = @user.comics.new(comic_params)
    @comic.comic_pages.build

    respond_to do |format|
      if @comic.save
        format.html { redirect_to @user, notice: 'Comic was successfully created.' }
        format.json { render action: 'show', status: :created, location: @user }
      else
        format.html { render action: 'new' }
        format.json { render json: @comic.errors, status: :unprocessable_entity }
      end
    end
  end

private
# Use callbacks to share common setup or constraints between actions.
def set_comic
  @comic = Comic.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def comic_params
  params.require(:comic).permit(:title, :synopsis)
end

def comic_page_params
  params.require(:comic_page).permit(:comic_page_image, :comic_image_file_name)
end

Many thanks!

--- EDIT ---

After the answer for the params, I used it to create the following create action:

def create
    @user = current_user
    @comic = @user.comics.new(comic_params)

    i = 0
    until i = 1
      @comic_page = @comic.comic_pages.new(comic_params[:comic_pages_attributes]["#{i}"])
      @comic_page.save
      i += 1
    end

    respond_to do |format|
      if @comic.save
        ...
      end
    end
  end
Dhaulagiri

You need to permit those fields from comic_pages that you want to save through in the comic_params section of your controller

params.require(:comic).permit(:title, :synopsis, comic_pages_attributes: [:comic_page_image])

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Rails 4 controller actions for fields_for nested resources

From Dev

Rails 4 nested fields_for not saving

From Dev

Retrieving form params in Rails 4 controller using fields_for and accepts_nested_attributes_for

From Dev

Rails 4: fields_for in fields_for

From Dev

Rails 4 Nested Attributes with fields_for Don't Save to Database

From Dev

rails fields_for and nested attributes

From Dev

rails fields_for nested objects

From Dev

Rails fields_for and not creating relationship with nested object

From Dev

Rails nested fields_for duplicate records in DB

From Dev

Rails 4 unpermitted parameter using fields_for ?

From Dev

Ruby on Rails 4 fields_for number of repetitions

From Dev

Ruby on Rails 4 fields_for number of repetitions

From Dev

Rails 4 fields_for not displaying or updating

From Dev

Rails 4 Params missing, Rspec testing nested resources controller update method

From Dev

Rails 4 controller actions duplicated JSON responses

From Dev

Create controller method with accepts_nested_attributes_for and fields_for

From Dev

Rails 4 Nested Resources Error with 3 models

From Dev

Forms, nested resources and routing errors Rails 4

From Dev

How to update nested resources Rails 4

From Dev

Using fields_for in Rails 4...does not save the new fields

From Dev

Updating nested fields_for and collection_select in Rails

From Dev

Rails 5 - has_many through: and nested fields_for in forms

From Dev

Rails shared controller actions

From Dev

Rails routes and controller actions

From Dev

Add nested fields in JSON output in Rails controller

From Dev

Nested resources in rails

From Dev

Rails Nested Resources Creation

From Dev

Nested resources in rails

From Dev

Forms and nested resources in rails

Related Related

  1. 1

    Rails 4 controller actions for fields_for nested resources

  2. 2

    Rails 4 nested fields_for not saving

  3. 3

    Retrieving form params in Rails 4 controller using fields_for and accepts_nested_attributes_for

  4. 4

    Rails 4: fields_for in fields_for

  5. 5

    Rails 4 Nested Attributes with fields_for Don't Save to Database

  6. 6

    rails fields_for and nested attributes

  7. 7

    rails fields_for nested objects

  8. 8

    Rails fields_for and not creating relationship with nested object

  9. 9

    Rails nested fields_for duplicate records in DB

  10. 10

    Rails 4 unpermitted parameter using fields_for ?

  11. 11

    Ruby on Rails 4 fields_for number of repetitions

  12. 12

    Ruby on Rails 4 fields_for number of repetitions

  13. 13

    Rails 4 fields_for not displaying or updating

  14. 14

    Rails 4 Params missing, Rspec testing nested resources controller update method

  15. 15

    Rails 4 controller actions duplicated JSON responses

  16. 16

    Create controller method with accepts_nested_attributes_for and fields_for

  17. 17

    Rails 4 Nested Resources Error with 3 models

  18. 18

    Forms, nested resources and routing errors Rails 4

  19. 19

    How to update nested resources Rails 4

  20. 20

    Using fields_for in Rails 4...does not save the new fields

  21. 21

    Updating nested fields_for and collection_select in Rails

  22. 22

    Rails 5 - has_many through: and nested fields_for in forms

  23. 23

    Rails shared controller actions

  24. 24

    Rails routes and controller actions

  25. 25

    Add nested fields in JSON output in Rails controller

  26. 26

    Nested resources in rails

  27. 27

    Rails Nested Resources Creation

  28. 28

    Nested resources in rails

  29. 29

    Forms and nested resources in rails

HotTag

Archive