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 <abiae...@gmail.com> 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 <jgue...@jginfosys.com> 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" <abia...@gmail.com> wrote: >>> >>>> Need the code in the controller edit action >>>> >>>> On 30 Sep 2016 4:03 p.m., "Joe Guerra" <jgu...@jginfosys.com> 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" <jgu...@jginfosys.com> 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 rubyonrails-ta...@googlegroups.com. >>>>>>> To post to this group, send email to rubyonra...@googlegroups.com. >>>>>>> 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 rubyonrails-ta...@googlegroups.com. >>>>> To post to this group, send email to rubyonra...@googlegroups.com. >>>>> 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 rubyonrails-talk+unsubscr...@googlegroups.com. >> To post to this group, send email to rubyonrails-talk@googlegroups.com. >> 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 rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. 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.