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

Add new movie

<%= form_tag :action => 'create' %>

Title: <%= text_field 'movie', 'title' %>

Price: <%= text_field 'movie', 'price' %>

Genre: <%= collection_select(:movie,:genre,@genres,:id,:name) %>

Description
<%= text_area 'movie', 'description' %>

<%= 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

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