Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何为版主制作单独的表格?_Ruby On Rails_Ruby On Rails 4_Simple Form - Fatal编程技术网

Ruby on rails 如何为版主制作单独的表格?

Ruby on rails 如何为版主制作单独的表格?,ruby-on-rails,ruby-on-rails-4,simple-form,Ruby On Rails,Ruby On Rails 4,Simple Form,假设我在edit.slim模板中有一个简单的表单。像下面这样 = simple_form_for article, method: :put do |f| = f.input :title = f.input :body = f.button :submit 但如果我想让不同的角色有不同呢? 例如,我怎样才能为一个成员提供一个表单,为一个版主提供一个扩展表单 主持人应该还有一个inpur字段=f。输入:状态,as::选择如果您有用户模型,请为admin创建一个列,并将默认值设置为f

假设我在edit.slim模板中有一个简单的表单。像下面这样

= simple_form_for article, method: :put do |f|
  = f.input :title
  = f.input :body
  = f.button :submit
但如果我想让不同的角色有不同呢? 例如,我怎样才能为一个成员提供一个表单,为一个版主提供一个扩展表单


主持人应该还有一个inpur字段=f。输入:状态,as::选择

如果您有用户模型,请为admin创建一个列,并将默认值设置为false。然后,您可以控制表单的哪些部分被显示

@user vs @user.admin 

或者,您可以指定只有@user.admin可以批准图像,或者只有@user.admin可以删除主题,或者只有@user.admin可以向上/向下投票等。如果您有用户模型,请为admin创建一列并将默认值设置为false。然后,您可以控制表单的哪些部分被显示

@user vs @user.admin 

或者,您可以指定只有@user.admin可以批准图像,或者只有@user.admin可以删除主题,或者只有@user.admin可以向上/向下投票等。您只需检查角色对不起Erb即可:

<% if current_user.is_moderator? %>
    <%= simple_form_for ... %>
    <!-- moderator form content -->
<% else %>
    <%= simple_form_for ... %>
    <!-- common form content -->
<% end %>
更新:
别忘了按照建议检查后端的版主权限

您只需检查角色对不起Erb即可:

<% if current_user.is_moderator? %>
    <%= simple_form_for ... %>
    <!-- moderator form content -->
<% else %>
    <%= simple_form_for ... %>
    <!-- common form content -->
<% end %>
更新:
别忘了按照建议在后端检查版主权限

最有效的方法是使用以下各项:

= simple_form_for article, method: :put do |f|
  = f.input :title
  = f.input :body
  - if current_user.moderator?
    = f.input :moderator_input
  = f.button :submit
这需要通过适当的检查在控制器中进行备份:

#app/controllers/articles_controller.rb
class ArticlesController < ApplicationController
   def create
     params = current_user.moderator? ? "moderator_params" : "user_params"
     @article = Article.new eval(params)
   end

   private

   def user_params
     params.require(:article).permit(:x, :y)
   end

   def moderator_params
     params.require(:article).permit(:x, :y, :z)
   end
end 

最有效的方法是使用以下各项:

= simple_form_for article, method: :put do |f|
  = f.input :title
  = f.input :body
  - if current_user.moderator?
    = f.input :moderator_input
  = f.button :submit
这需要通过适当的检查在控制器中进行备份:

#app/controllers/articles_controller.rb
class ArticlesController < ApplicationController
   def create
     params = current_user.moderator? ? "moderator_params" : "user_params"
     @article = Article.new eval(params)
   end

   private

   def user_params
     params.require(:article).permit(:x, :y)
   end

   def moderator_params
     params.require(:article).permit(:x, :y, :z)
   end
end 

除了常规表单之外,版主表单还有什么?除了常规表单之外,版主表单还有什么?但是您如何准确地控制表单中为不同角色显示的部分?使用。从安全角度来看,您应该创建实际规则,防止非版主编辑/发布这些字段。否则,例如,如果有一天在视图中出错并显示表单,现在它们可以执行您不希望它们执行的任何操作。但是,如何准确地控制表单的哪些部分显示给不同的角色?使用。从安全角度来看,您应该创建实际规则,防止非版主编辑/发布这些字段。否则,例如,如果有一天您的视图中出现错误,并且表单被显示,那么现在它们可以执行您不希望它们执行的任何操作。最后一个选项似乎适合我的情况。我来试试。最后一个选择似乎适合我的情况。我来试试这个。