在我们的rails 3.2.12 app中,我们希望根据访问规则有选择地在new/edit
个视图中显示字段(使用simple_form)。例如,对于销售,只能显示客户的name
和phone#
。由于我们不知道访问规则是什么,我们需要在运行时动态构造视图。实现此目的的一种方法是在视图中使用if
,这会使视图变得混乱。我们认为custom
表单构建可能有所帮助。在网上阅读了一些关于自定义表单构建器的帖子之后,我们仍然没有太多线索。有人可以提供有关如何使用custom
表单构建器实现此功能的详细信息吗?谢谢你的帮助!
更新:
由于我们不知道访问规则是什么,因此我们需要在运行时dynamically
构建view
。
答案 0 :(得分:2)
通常,自定义表单构建器用于更改表单HTML的结构,而不是用于控制字段访问。
“清理”意见的几点建议:
= form_builder.input :credit_card_number if current_user.admin?
等字段排除字段。编辑:
根据您的评论,如果所有列都被视为相同且您不需要更改其顺序(使用HAML,但您可以将其更改为ERB,则听起来如下对您来说可能是一个好方法)必要的话):
= simple_form_for @model do |f|
= f.error_notification
- @model.columns_available_for(current_user).each do |column|
= f.input column
答案 1 :(得分:1)
你可以使用rails helpers来做到这一点。
对于前。
module SalesHelper
def show_fields
if current_user.admin?
render 'some_partial' #having name and phone field
else
render 'other_partial'
end
end
结束
在您的视图中添加相应的部分和新的或编辑只需调用
<%= show_fields%>