2015-07-31 1 views
0

J'ai créé un modèle nommé Groupe. qui ont un nom, attributs sesssionId. dans mon index.html.erb i ajoutéimpossible d'accéder aux attributs du modèle dans la vue

<%=form_for(@group) do |f|%> 
<%=f.text_field :name %> 
<%=f.submit%> 
<%end%> 

dans des groupes contrôleur i stockés attributs dans le modèle du groupe

def index 
@group = Group.new 
@groups = Group.all 
end 

def create 
#here i am getting "session" with some other code... 
params[:group][:sessionId] = session.session_id 
@group = Group.create(strong_param) 
#@group = Group.new(params[:group]) 
if @group.save 
    redirect_to("/room/"[email protected]_s) 
else 
    render :controller => 'groups', :action => 'index' 
end 
end 

def room 
end 
private 
def strong_param 
    params.require(:group).permit(:name,:sessionId) 
end 

dans room.html.erb

<p>unique url for this room is <%[email protected]%></p> 

quand j'ai essayé d'accéder à group_id dans la vue de la pièce, cela montre

undefined method `id' for nil:NilClass 

Je ne peux pas accéder à ces attributs modèle en vue ci-dessus. Et je peux y accéder en vue index. merci d'avance.

Répondre

4

méthode non définie id » pour nul: NilClass

L'erreur est parce que vous n'avez pas @group dans la méthode room.

Essayez le code ci-dessous

def room 
    @group = Group.find(params[:id]) 
end 
1

Dans l'action du contrôleur pour le «/chambre /: id », auquel vous redirigez l'utilisateur après avoir créé un groupe, la variable @group n'est pas réglé, celui-ci vous l'erreur.

1

Vous devez définir @group dans l'action room:

def room 
    @group = Group.find(params[:group_id]) 
end 

Je voudrais aussi vous conseiller pour en savoir plus sur le routage dans Rails, de sorte que vous pouvez nettoyer votre contrôleur un peu.