无法访问视图中的模型属性

时间:2015-07-31 07:15:23

标签: ruby-on-rails model-view-controller model attributes

我创建了一个名为Group的模型。其中有name,sesssionId属性。 在我的 index.html.erb 我添加了

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

在组控制器i中存储组模型中的属性

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/"+@group.id.to_s)
 else
   render :controller => 'groups', :action => 'index'
 end
end

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

中的

<p>unique url for this room is <%=@group.id%></p>

当我尝试在房间视图中访问group_id时显示

undefined method `id' for nil:NilClass

我无法在上面的视图中访问这些模型属性。我可以在索引视图中访问它们。 提前谢谢。

3 个答案:

答案 0 :(得分:4)

  

nil的未定义方法`id':NilClass

错误是因为@group方法中没有room

尝试以下代码

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

答案 1 :(得分:1)

在创建组后重定向用户的“/ room /:id”的控制器操作中,未设置@group变量,因此您会收到错误。

答案 2 :(得分:1)

您应该在@group操作中设置room

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

我还建议你学习Rails中的路由,这样你就可以稍微清理你的控制器了。