1

在我们的 rails 3.2.12 应用程序中,我们希望new/edit根据访问规则有选择地在视图中显示字段(使用 simple_form)。例如,对于销售,只能显示客户的namephone#。由于我们不知道访问规则将是什么,我们需要在运行时动态构建视图。实现这一点的一种方法是if在视图中使用,这会使视图变得混乱。我们认为custom表单构建可能会有所帮助。在网上阅读了一些关于自定义表单生成器的帖子后,我们仍然没有太多线索。有人可以提供有关如何使用custom表单生成器实现此功能的详细信息吗?感谢帮助!

更新:由于我们不知道访问规则将是什么,我们需要在运行时dynamically构建。view

4

2 回答 2

2

通常,自定义表单构建器用于更改表单 HTML 的结构,而不是用于控制字段访问。

一些“清理”视图的建议:

  1. 使用SimpleForm可以让您将表单字段/标签作为一个单元处理,从而更容易排除仅使用= form_builder.input :credit_card_number if current_user.admin?.
  2. 对于更多应用范围的解决方案,CanCan可以帮助您管理授权和角色。

编辑:

根据您的评论,如果所有列的处理方式相同并且您不需要更改它们的顺序(使用 HAML,但您可以在必要时将其更改为 ERB),那么以下方法对您来说可能是一个好方法:

= simple_form_for @model do |f|
   = f.error_notification
   - @model.columns_available_for(current_user).each do |column|
      = f.input column
于 2013-03-30T05:18:01.763 回答
1

You can use rails helpers to do that.

For ex.

module SalesHelper  
 def show_fields  
  if current_user.admin?  
    render 'some_partial' #having name and phone field  
  else  
     render 'other_partial'  
  end  
 end  

end

In your views add respective partials and from new or edit just call
<%= show_fields %>

于 2013-03-30T11:00:32.273 回答