MrR*_*uru 31 forms ruby-on-rails crud hidden-field
假设我有一个User模型,其facebook_uid字段对应于用户的facebook id.
我想允许用户取消他的Facebook帐户的链接.这样做,我需要将此属性设置为nil.
我目前看到了两种方法
# app/controllers/users_controller.rb
def unlink_facebook_account
@user = User.find params[:id]
# Authorization checks go here
@user.facebook_uid = nil
@user.save
# Redirection go here
end
# config/routes.rb
ressources :users do
get 'unlink_fb', :on => :member, :as => unlink_fb
end
# in a view
= link_to "Unlink your facebook account", unlink_fb_path(@user)
Run Code Online (Sandbox Code Playgroud)
# app/views/user/_unlink_fb_form.html.haml
= form_for @user, :method => "post" do |f|
= f.hidden_field :facebook_uid, :value => nil
= f.submit "Unlink Facebook account"
Run Code Online (Sandbox Code Playgroud)
我不是两种方式的忠实粉丝.
在第一个中,我必须为更新控制器已经可以执行的操作添加新操作.
在第二个中,我无法在不自定义更新操作的情况下将facebook_uid设置为nil,并且在没有添加一些javascript的情况下我没有链接而不是按钮.
不过,对于这种情况,您会推荐哪种最佳和最优雅的解决方案?我错过了第三种选择吗?
使用指向更新操作的链接,并将属性更新为参数; 并在属性设置为0时处理大小写
= link_to "Unlink your facebook account",
user_path(@user,
:user => { :facebook_uid => 0}),
:method => :put,
:confirm => "Are you sure?"
Run Code Online (Sandbox Code Playgroud)
Abd*_*aly 37
不确定您的路由是什么样的,但如果您有更新操作,它应该与link_to一起使用.如果您使用链接,请确保使用PUT或POST方法(理想情况下是PUT,因为它是更新):
link_to("Unlink your facebook account", user_path(@user, :facebook_uid => nil), :method => :put, :confirm => "Are you sure?")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14145 次 |
| 最近记录: |