我目前正在使用Devise用户系统来设置与Tutor
和Profile
模型Tutor has_one :profile
相关联的模型Profile belongs_to :tutor
。因此,tutor_id外键将每个简档条目与教师条目相关联。
在Profile
模型中,我有通常的Rails REST方法new
,edit
,show
,create
和update
。< / p>
通过URI profile#edit
访问/profiles/:id/edit
时,无论在网址中输入的代码是什么,都可以对配置文件的相应Tutor模型进行正确的修改,但URL似乎有点尴尬,不能反映这一点。
因此,如果:id
tutor
和个人资料tutor_id: 2
已登录,请通过id: 2
或edit
以某种方式访问/profiles/4/edit
操作产生与访问正确的URL /profiles/afjsdjfdsj/edit
相同的结果,并仍然会更新导师的正确配置文件。
我想要做的是更新地址栏中的网址以反映个人资料/profiles/2/edit
。我尝试在我id: 2
的{{1}}方法中使用redirect_to
无效:
edit
这是profiles_controller.rb
ProfilesController
这是routes.rb
#app/assets/controllers/profiles_controller.rb
def edit
...
@profile = current_tutor.profile
if @profile.id != params[:id]
redirect_to edit_profile_path(@profile.id)
end
...
end
答案 0 :(得分:0)
经过多次挫折后,我发现params[:id]
返回一个字符串而不是一个整数,因此需要to_i
来比较这两个。
正确的代码:
#app/assets/controllers/profiles_controller.rb
def edit
...
@profile = current_tutor.profile
if @profile.id != params[:id].to_i # convert params[:id] to an integer value
redirect_to edit_profile_path(@profile.id)
end
...
end