[Ror-es] show and update problem with relation

Fran Hurtado
Tue May 17 10:35:50 GMT 2011


Hola Manuel,

Escribí en inglés porque todo el proceso de alta me vino en inglés y por 
eso pensaba que al final me habría suscrito a la lista de inglés.

Gracias por la aclaración y en cuanto al codigo no seais muy duros jeje 
es mi primera semana con RoR

Un abrazo y gracias!

FRAN


El 17/05/11 12:32, Manuel González Noriega escribió:
> Hola Fran,
>
> me queda la duda de a qué lista querías mandar el mensaje. Si es a la
> lista en español, aparte de que puedes obviamente escribir en español,
> por favor, usa la dirección 
>
> Tu código si tiene problemas evidentes, los discutimos en la otra lista.
>
> On 17 May 2011 10:27, Fran Hurtado  wrote:
>> Hello!
>>
>> At first sorry for my English!
>>
>> I am having problem with a show and update view. I have two tables in my
>> database named: "candidates" and "provincias". Candidates has a int column
>> named 'provincia' which is related with int column 'id' on the table
>> "provincias".
>>
>> I am using nifty:generators for authentication, and the 'id' of the user is
>> related with Candidates int column named 'candidateid'.
>>
>> I have the two models:
>>
>> Model candidate.rb
>> class Candidate<  ActiveRecord::Base
>>      belongs_to :provincia
>> end
>>
>> Model provincia.rb
>> class Provincia<  ActiveRecord::Base
>>      has_many :candidates
>> end
>>
>> And my controller:
>>
>> Controller candidates.controller.rb
>> class CandidatesController<  ApplicationController
>>
>>     def list
>>         = Candidate.find(:all)
>>     end
>>
>>     def show
>>       = Candidate.find_by_candidateid(params[:id])
>>      if .blank?
>>          redirect_to :controller =>  "candidates", :action =>  "new"
>>      end
>>     end
>>
>>     def new
>>         = Candidate.new
>>        @userid = session[:user_id]
>>         = Provincia.find(:all)
>>     end
>>
>>     def create
>>         = Candidate.new(params[:candidate])
>>        if .save
>>              redirect_to :action =>  'show'
>>        else
>>              render :action =>  'new'
>>        end
>>     end
>>
>>     def edit
>>          = Candidate.find(params[:id])
>>         @userid = session[:user_id]
>>          = Provincia.find(:all)
>>     end
>>
>>     def update
>>          = Candidate.find(params[:id])
>>      if .update_attributes(params[:candidate])
>>          redirect_to :action =>  'show', :id =>  
>>      else
>>          render :action =>  'edit'
>>      end
>>     end
>>
>>     def show_provincias
>>         = Provincia.find(params[:id])
>>     end
>>
>> end
>>
>>
>> When I try to see the show view I have this error: undefined method `name'
>> for nil:NilClass
>>
>> View show.html.erb
>> <h1><%= .name %>  <%= .surname %></h1>
>> <table cellpadding="4" cellspacing="0">
>>      <tr><td><strong>DNI:</strong></td><td><%= .dni %></td></tr>
>>      <tr><td><strong>Email :</strong></td><td><%= .email
>> %></td></tr>
>>      <tr><td><strong>Phone:</strong></td><td><%= .phone
>> %></td></tr>
>>      <tr><td><strong>City:</strong></td><td><%= .city %></td></tr>
>>      <tr><td><strong>State:</strong></td><td><%= .provincia.name
>> %></td></tr>
>> </table><br />
>>
>> <%= link_to 'Edit', {:action =>  'edit', :id =>  session[:user_id]} %>
>>
>> When I try to update my candidate info I have this error:
>> Provincia(#1817717145020) expected, got String(#1817757682680)
>>
>> View edit.html.erb
>> <p>Changing your data</p><br />
>>
>> <% form_tag :action =>  'update', :id =>   do %>
>>      <table cellpadding="4" cellspacing="0">
>>      <tr><td><label for="candidate_name">Name</label>:</td><td><%= text_field
>> 'candidate', 'name' %></td></tr>
>>      <tr><td><label for="candidate_surname">Surname</label>:</td><td><%=
>> text_field 'candidate', 'surname' %></td></tr>
>>      <tr><td><label for="candidate_email">Email</label>:</td><td><%=
>> text_field 'candidate', 'email' %></td></tr>
>>      <tr><td><label for="candidate_phone">Phone</label>:</td><td><%=
>> text_field 'candidate', 'phone' %></td></tr>
>>      <tr><td><label for="candidate_city">City</label>:</td><td><%= text_field
>> 'candidate', 'city' %></td></tr>
>>      <tr><td><label for="candidate_provincia">State</label>:</td><td><%=
>> collection_select(:candidate,:,:id,:name) %></td></tr>
>>
>>      <%= hidden_field 'candidate', 'candidateid', :value =>  @userid %>
>>      </table><br />
>>      <%= submit_tag "Update" %>
>> <% end  %>
>>
>>
>> _______________________________________________
>> Proudly free of Ruby Forum crossposting since 01/07/2009
>> Ror-es mailing list
>> 
>> 
>>
>>
> _______________________________________________
> Proudly free of Ruby Forum crossposting since 01/07/2009
> Ror-es mailing list
> 
>