Duda sobre formulario

Muy buenas. Despues de darle muchas vueltas al foro y al codigo he
decidido pedir ayuda a ver si podeis resolvermela.
Estoy realizando una aplicacion de hoja de actividades donde tengo los
siguientes modelos:

User: Project: UserProject:
id id user_id
name name project_id
… …

El ultimo modelo sirve para relacionar los usuarios y los projectos.
Las relaciones entre modelos ya las tengo indicadas. Decir que
la clave primaria de la tabla user_projects es (user_id,project_id).
A los usuarios intento asignarle los proyectos con el siguiente
formulario:

 <% form_for :user_project, :url => { :action => :save_user_proj }

do |form| %>


<%= form.select :project_id,
Project.find(:all).collect {|p| [ p.name, p.id ] },
:prompt => “Selecciona un proyecto”,
:selected => nil
%>

    <%= submit_tag 'Guardar' %>
<% end %>

Y en el controlador users_controller hago lo siguiente:

    def save_user_proj
@user_proj = UserProject.new(params[:user_project])
@user_proj.user_id = @user.id
@user_proj.save

end

Seguro que es una burrada lo que estoy haciendo, pero es que no
encuentro una solucion. Muchas gracias por la ayuda que me podais
prestar.

El día 22 de julio de 2008 19:25, Jose antonio Parra
[email protected]
escribió:> Y en el controlador users_controller hago lo siguiente:

   def save_user_proj

@user_proj = UserProject.new(params[:user_project])
@user_proj.user_id = @user.id <— de donde sale este @user??? esto queda mejor: @user_proj.user = @user

Aparte de saber cómo calculas ese @user, ¿cuál es el error que obtienes?
¿Has revisado que tienes bien asignadas las relaciones en cada modelo?

Ya lo he solucionado. El @user era una variable que se generaba al
mostrar la pagina del formulario, y que era el usuario al que se le
queria asignar proyectos.
El error que me daba era de un valor nulo.
Lo que he hecho ha sido, en el formulario:

<% form_for :user_project, :url => { :action => :save_user_proj, :id =>
@user.id } do |form| %>


<%= form.select :project_id,
Project.find(:all).collect {|p| [ p.name, p.id ] },
:prompt => “Selecciona un proyecto”,
:selected => nil
%>

    <%= submit_tag 'Guardar' %>

<% end %>

Y en el controlador:

def save_user_proj
@user = User.find(params[:id])
@user_proj = UserProject.new(params[:user_project])
@user_proj.user = @user
@user_proj.save
end

El problema era que abusaba mucho de la utilizacion de la variable
local @user, que la declaraba el controlador, se utilizaba en la pagina
del formulario, he intentaba utilizarla otra vez con el controlador al
querer validar el formulario.
Muchas gracias por la ayuda.

Raul M. wrote:

El d�a 22 de julio de 2008 19:25, Jose antonio Parra
[email protected]
escribi�:> Y en el controlador users_controller hago lo siguiente:

   def save_user_proj

@user_proj = UserProject.new(params[:user_project])
@user_proj.user_id = @user.id <— de donde sale este @user??? esto queda mejor: @user_proj.user = @user

Aparte de saber c�mo calculas ese @user, �cu�l es el error que obtienes?
�Has revisado que tienes bien asignadas las relaciones en cada modelo?