我创建了一个名为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
我无法在上面的视图中访问这些模型属性。我可以在索引视图中访问它们。 提前谢谢。
答案 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中的路由,这样你就可以稍微清理你的控制器了。