我是Ruby on Rails的新手...我一直在玩开发社交网络类型的应用程序....我刚刚成功地将Restful Authentication添加到我的应用程序中......现在我想创建一个模型/ controller,每个用户登录后都可以创建/编辑自己的个人资料。
所以我创建了模型和控制器...... Profile控制器中的代码如下所示:
def new
@profile = Profile.new(params[:user_id])
if request.post?
@profile.save
flash[:notice] = 'Profile Saved'
redirect_to :action => 'index'
end
end
我正在尝试将用户在会话中的[restful auth。]的user_id连接到我在配置文件模型中创建的user_id列。我已经在用户模型中添加了“has_one:profile”,在配置文件模型中添加了“belongs_to:user”...但是它没有添加配置文件。我有点卡住,因为我对此比较陌生......我应该在会话模型或控制器中添加一些东西吗?
任何帮助,想法或研究的地方都会受到赞赏......
将新模型连接到现有模型非常重要,我想弄明白这一点。
答案 0 :(得分:2)
默认情况下,new
操作是HTTP GET,所以你的request.post?块被绕过。 request.post?无论如何都是无关紧要的(出于基本目的),所以我完全摆脱了这一点,并将save
代码的其余部分移到你的create
行动中。
def new
@profile = Profile.new
end
def create
@user = User.find(params[:user_id])
@profile = Profile.create(@user, params[:profile]) # or whatever params you use in your form
# you can also do @profile = @user.profile.create(params[:profile]) here
# sans @user find: @profile = current_user.profile.create(params[:profile])
if @profile.save
flash[:notice] = 'Profile Saved'
redirect_to :action => 'index'
else
flash[:warning] = 'Could not save profile'
redirect_to :back # or wherever
end
end
答案 1 :(得分:0)
首先,如果您刚开始使用,则应认真考虑使用Authlogic而不是Restful Authentication。没有生成器,最终您可以轻松管理代码。
对于此特定问题:记录@profile.save
的创建应该在create
操作中。 new
用于为表单设置模型实例,以便在new.html.erb
视图中对其进行编辑。
您可能还可以访问名为@current_user的方法(或称为current_user的函数)。如果你这样做,你可以通过这样做来缓解一些事情:
@profile = current_user.profile.build
方法build
将为您创建用户与个人资料之间的关联。