0

我正在创建一个 Rails 应用程序,它是一个博客平台,有许多撰稿人。我的用户模型有一个:writer布尔属性来指示特定用户是否有权发布文章。为了防止批量分配,:writer属性未用户模型attr_accessible下列出。相反,我想创建一个类似于以下的函数,以允许切换作者权限:

def toggle_writer    
  if User.find(:id).writer?
    User.find(:id).update_attribute(:writer, false)
  else
    User.find(:id).update_attribute(:writer, true)
  end
  flash[:success] = "User permissions toggled."
  redirect_to admintools_users_path
end

不过,我对这种方法有几个问题:

  1. 我将如何从视图中调用它?有没有办法通过link_tobutton_for调用函数?
  2. 我会把这样的功能放在哪里?在控制器或助手中?
  3. 我需要编辑config/routes.rb文件中的任何路由吗?

在此先感谢您的帮助!

4

1 回答 1

2
  1. 是的你可以。
  2. 如果你把它放在users_controller.
  3. 是的,你会的。由于此操作将更新单个用户,因此,您应该在 中执行以下操作routes.rb

     resources :users do
       member do #this means you are doing with a certain object
         get :toggle_writer, :as => :toggle_writer_for # this line will generate toggle_writer_for_user_path route
       end
     end
    

现在您可以使用这条路线link_to,例如link_to("Toggle writer", toggle_writer_for_user_path(@user))@user您可以从哪里到达params[:id]

于 2011-05-17T07:07:56.300 回答