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/ms
>> gid/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/CAHewxcFmoswBJp8dT2d6RqrLJ0n-ynerQzY00TpfkTb5-gHnsA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.