NewbieHelp

Im having n error message

ActiveRecord::AssociationTypeMismatch in MovieController#create

Genre expected, got String

Parameters:

{"commit"=>"Create",
"authenticity_token"=>"b2aa33146f0a40aa59d887b8e19d0635cbdc2612",
"movie"=>{"title"=>"Matrix",
"price"=>"15",
"description"=>"sldljsvnsdvdv",
"genre"=>"1"}}

view code for movies

<h1>Add new movie</h1>
<%= form_tag :action => 'create' %>
<p><label for="movie_title">Title</label>:
<%= text_field 'movie', 'title' %></p>
<p><label for="movie_price">Price</label>:
<%= text_field 'movie', 'price' %></p>
<p><label for="movie_genre">Genre</label>:
<%= collection_select(:movie,:genre,@genres,:id,:name) %></p>
<p><label for="movie_description">Description</label><br/>
<%= text_area 'movie', 'description' %></p>
<%= submit_tag "Create" %>
<%= link_to 'Back', {:action => 'list'} %>

movie controller

class MovieController < ApplicationController
def list
@movies = Movie.find(:all)
   end

   def show
   @movie = Movie.find(params[:id])
   end

   def new
   @movie = Movie.new
   @genres = Genre.find(:all)
   end

   def create
@movie = Movie.new(params[:movie])
    if @movie.save
    redirect_to :action => 'list'
   else
   @genres = Genre.find(:all)
   render :action => 'new'
end
end

   def edit
   @movie = Movie.find(params[:id])
   @genres = Genre.find(:all)
   end

   def update
   @movie = Movie.find(params[:id])
   if @movie.update_attributes(params[:movie])
   redirect_to :action => 'show', :id => @movie
   else
   @genres = Genre.find(:all)
   render :action => 'edit'
end
   end

   def delete
   Movie.find(params[:id]).destroy
      redirect_to :action => 'list'
   end

end

model for movie

class Movie < ActiveRecord::Base
belongs_to :genre

end

model for genre

class Genre < ActiveRecord::Base
has_many :movies
end

···

I'm kind of lost right now. A little help will b highly apprecieated
thanks

--
Posted via http://www.ruby-forum.com/\.

For AR movie.genre is an object of type Genre. Also on creation it expects move.genre to be an Object of the type Genre e.g. your Model.
so the make this work quickly:

@movie = Movie.new(params[:movie])
@movie.genre = Genre.find :condition => { :id => params[:genre_id] }, :limit => 1

  or

You could take a look at nested forms
http://ryandaigle.com/articles/2008/7/19/what-s-new-in-edge-rails-nested-models

···

On 12.07.2009, at 11:15, Luis Teko wrote:

Im having n error message

ActiveRecord::AssociationTypeMismatch in MovieController#create

Genre expected, got String

Parameters:

{"commit"=>"Create",
"authenticity_token"=>"b2aa33146f0a40aa59d887b8e19d0635cbdc2612",
"movie"=>{"title"=>"Matrix",
"price"=>"15",
"description"=>"sldljsvnsdvdv",
"genre"=>"1"}}

view code for movies

<h1>Add new movie</h1>
<%= form_tag :action => 'create' %>
<p><label for="movie_title">Title</label>:
<%= text_field 'movie', 'title' %></p>
<p><label for="movie_price">Price</label>:
<%= text_field 'movie', 'price' %></p>
<p><label for="movie_genre">Genre</label>:
<%= collection_select(:movie,:genre,@genres,:id,:name) %></p>
<p><label for="movie_description">Description</label><br/>
<%= text_area 'movie', 'description' %></p>
<%= submit_tag "Create" %>
<%= link_to 'Back', {:action => 'list'} %>

movie controller

class MovieController < ApplicationController
def list
@movies = Movie.find(:all)
end

def show
@movie = Movie.find(params[:id])
end

def new
@movie = Movie.new
@genres = Genre.find(:all)
end

def create
@movie = Movie.new(params[:movie])
  if @movie.save
  redirect_to :action => 'list'
else
@genres = Genre.find(:all)
render :action => 'new'
end

def edit
@movie = Movie.find(params[:id])
@genres = Genre.find(:all)
end

def update
@movie = Movie.find(params[:id])
if @movie.update_attributes(params[:movie])
redirect_to :action => 'show', :id => @movie
else
@genres = Genre.find(:all)
render :action => 'edit'
end
end

def delete
Movie.find(params[:id]).destroy
    redirect_to :action => 'list'
end

end

model for movie

class Movie < ActiveRecord::Base
belongs_to :genre

end

model for genre

class Genre < ActiveRecord::Base
has_many :movies
end

I'm kind of lost right now. A little help will b highly apprecieated
thanks

--
Posted via http://www.ruby-forum.com/\.