Your line:
params.require(:product).permit(:title, :template, :price, :msrp, :enddate)
needs to be:
params.require(:product).permit(:title, :template, :price, :msrp, :enddate,
:category_id)
On Tuesday, October 4, 2016 at 3:15:26 PM UTC-4, Joe Guerra wrote:
>
> Still unsure of what to do... this is my migration to add category {id}
> to my products table
>
> class AddCategoryRefToProducts < ActiveRecord::Migration
> def change
> add_reference :products, :category, index: true, foreign_key: true
> end
> end
>
>
>
>
>
>
> On Friday, September 30, 2016 at 3:33:04 PM UTC-4, mode-x wrote:
>>
>> change to this also...observe the category_id attribute. I hope you have
>> it in your product model
>>
>> <%= simple_form_for(@product) do |f| %>
>> <%= f.error_notification %>
>> <div class = "field">
>> <%= f.label :category %><br/>
>> <%= f.collection_select :category_id, Category.all, :id, :name %>
>> </div>
>> <div class="form-inputs">
>> <%= f.input :title %>
>> <%= f.input :template %>
>> <%= f.input :price %>
>> <%= f.input :msrp %>
>> <%= f.input :enddate %>
>> <%= f.input :draft %>
>> </div>
>> <div class="form-actions">
>> <%= f.button :submit %>
>> </div>
>> <% end %>
>>
>> On Fri, Sep 30, 2016 at 8:23 PM, Emmanuel Abia <[email protected]> wrote:
>>
>>> The problem is that you have not passed in the category id so it wont
>>> get saved. I suggest you:
>>>
>>> 1. add category_id to your list of permitted product params
>>> 2. introduce validations in the product model to guard against
>>> missing values
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Fri, Sep 30, 2016 at 4:43 PM, Joe Guerra <[email protected]>
>>> wrote:
>>>
>>>>
>>>> class ProductsController < ApplicationController
>>>> before_action :set_product, only: [:show, :edit, :update, :destroy]
>>>>
>>>> # GET /products
>>>> # GET /products.json
>>>> def index
>>>>
>>>> # @search = Product.search(params[:search])
>>>>
>>>> #ransack
>>>> @search = Product.search(params[:q])
>>>> @products = @search.result.paginate(page: params[:page] , per_page:
>>>> 10)
>>>>
>>>> # @products = Product.all
>>>>
>>>> # @products = @search.all
>>>>
>>>> #paginate
>>>> #@product = Product.paginate(:page => params[:page], per_page: 10)
>>>> #Product.paginate(:page => params[:page], per_page: 10)
>>>>
>>>> end
>>>>
>>>> # GET /products/1
>>>> # GET /products/1.json
>>>> def show
>>>> end
>>>>
>>>> # GET /products/new
>>>> def new
>>>> @product = Product.new
>>>> end
>>>>
>>>> # GET /products/1/edit
>>>> def edit
>>>> end
>>>>
>>>> # POST /products
>>>> # POST /products.json
>>>> def create
>>>> @product = Product.new(product_params)
>>>>
>>>> respond_to do |format|
>>>> if @product.save
>>>> format.html { redirect_to @product, notice: 'Product was
>>>> successfully created.' }
>>>> format.json { render :show, status: :created, location:
>>>> @product }
>>>> else
>>>> format.html { render :new }
>>>> format.json { render json: @product.errors, status:
>>>> :unprocessable_entity }
>>>> end
>>>> end
>>>> end
>>>>
>>>> # PATCH/PUT /products/1
>>>> # PATCH/PUT /products/1.json
>>>> def update
>>>> respond_to do |format|
>>>> if @product.update(product_params)
>>>> format.html { redirect_to @product, notice: 'Product was
>>>> successfully updated.' }
>>>> format.json { render :show, status: :ok, location: @product }
>>>> else
>>>> format.html { render :edit }
>>>> format.json { render json: @product.errors, status:
>>>> :unprocessable_entity }
>>>> end
>>>> end
>>>> end
>>>>
>>>> # DELETE /products/1
>>>> # DELETE /products/1.json
>>>> def destroy
>>>> @product.destroy
>>>> respond_to do |format|
>>>> format.html { redirect_to products_url, notice: 'Product was
>>>> successfully destroyed.' }
>>>> format.json { head :no_content }
>>>> end
>>>> end
>>>>
>>>> private
>>>> # Use callbacks to share common setup or constraints between
>>>> actions.
>>>> def set_product
>>>> @product = Product.find(params[:id])
>>>> end
>>>>
>>>> # Never trust parameters from the scary internet, only allow the
>>>> white list through.
>>>> def product_params
>>>> # params.fetch(:product, {})
>>>>
>>>> params.require(:product).permit(:title, :template, :price,
>>>> :msrp, :enddate)
>>>>
>>>> end
>>>>
>>>>
>>>>
>>>>
>>>> end
>>>>
>>>>
>>>> Ok, that's my product controller...
>>>>
>>>>
>>>> On Friday, September 30, 2016 at 11:38:34 AM UTC-4, mode-x wrote:
>>>>>
>>>>> Pardon me its the update action code
>>>>>
>>>>> On 30 Sep 2016 4:31 p.m., "Emmanuel Abia" <[email protected]> wrote:
>>>>>
>>>>>> Need the code in the controller edit action
>>>>>>
>>>>>> On 30 Sep 2016 4:03 p.m., "Joe Guerra" <[email protected]> wrote:
>>>>>>
>>>>>>> Ok, here is my edit products page...
>>>>>>>
>>>>>>> <% if user_signed_in? %> <!-- fix this change to admin user -->
>>>>>>>
>>>>>>> <h1>Editing Product</h1>
>>>>>>>
>>>>>>> <%= render 'form' %>
>>>>>>>
>>>>>>> <%= link_to 'Show', @product %> |
>>>>>>> <%= link_to 'Back', products_path %>
>>>>>>>
>>>>>>> <% else %>
>>>>>>>
>>>>>>>
>>>>>>> <div class="alert alert-warning" role="alert">You must be signed
>>>>>>> in as administrator to edit the products.</div>
>>>>>>>
>>>>>>> <% end %>
>>>>>>>
>>>>>>>
>>>>>>> here is my _form
>>>>>>>
>>>>>>> <%= simple_form_for(@product) do |f| %>
>>>>>>> <%= f.error_notification %>
>>>>>>>
>>>>>>>
>>>>>>> <!-- fix this -->
>>>>>>> <div class = "field">
>>>>>>>
>>>>>>> <%= f.label :category %><br/>
>>>>>>>
>>>>>>> <%= f.collection_select :category, Category.all, :id, :name %>
>>>>>>> </div>
>>>>>>> <!-- fix this, it should save the category to the model -->
>>>>>>>
>>>>>>> <div class="form-inputs">
>>>>>>>
>>>>>>> <%= f.input :title %>
>>>>>>> <%= f.input :template %>
>>>>>>> <%= f.input :price %>
>>>>>>> <%= f.input :msrp %>
>>>>>>> <%= f.input :enddate %>
>>>>>>> <%= f.input :draft %>
>>>>>>>
>>>>>>>
>>>>>>> </div>
>>>>>>>
>>>>>>> <div class="form-actions">
>>>>>>> <%= f.button :submit %>
>>>>>>> </div>
>>>>>>> <% end %>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Friday, September 30, 2016 at 10:58:34 AM UTC-4, mode-x wrote:
>>>>>>>>
>>>>>>>> You need to show the code for your edit
>>>>>>>>
>>>>>>>> On 30 Sep 2016 3:51 p.m., "Joe Guerra" <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> I've got two tables in my Postgres database: categories and
>>>>>>>>> products.
>>>>>>>>>
>>>>>>>>> I have a one to many relationship defined, one category can have
>>>>>>>>> many products.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I then created a reference and migrated the tables.
>>>>>>>>>
>>>>>>>>> AddCategoryRefToProducts category:references
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I have this in my models.
>>>>>>>>>
>>>>>>>>> #product.rb
>>>>>>>>> belongs_to :category
>>>>>>>>> #category.rb
>>>>>>>>> has_many :products
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I've fixed the _form to include the category id. But when I edit
>>>>>>>>> or update the form, the category id is not written to the product
>>>>>>>>> table.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I think I'm missing a step somewhere, not sure where.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Any suggestions?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>>
>>>>>>>>> Joe
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>> Groups "Ruby on Rails: Talk" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>> send an email to [email protected].
>>>>>>>>> To post to this group, send email to [email protected].
>>>>>>>>> To view this discussion on the web visit
>>>>>>>>> https://groups.google.com/d/msgid/rubyonrails-talk/8c62b187-a01f-4da3-8051-8772215ebb3d%40googlegroups.com
>>>>>>>>>
>>>>>>>>> <https://groups.google.com/d/msgid/rubyonrails-talk/8c62b187-a01f-4da3-8051-8772215ebb3d%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>
>>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "Ruby on Rails: Talk" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to [email protected].
>>>>>>> To post to this group, send email to [email protected].
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/d/msgid/rubyonrails-talk/6779741f-a256-422b-8aee-ace7a38cfc91%40googlegroups.com
>>>>>>>
>>>>>>> <https://groups.google.com/d/msgid/rubyonrails-talk/6779741f-a256-422b-8aee-ace7a38cfc91%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Ruby on Rails: Talk" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/rubyonrails-talk/b4d9af8e-7e31-4d0a-96ef-1ae29d70e34b%40googlegroups.com
>>>>
>>>> <https://groups.google.com/d/msgid/rubyonrails-talk/b4d9af8e-7e31-4d0a-96ef-1ae29d70e34b%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/eab8b30b-a3dc-48a0-a95f-c1da69d29d84%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.