簡體   English   中英

Rails:如何根據值使輸入只讀

[英]Rails: How to make input read only depending on value

我有一個嵌套的模型表格,我的Foo有很多BarsBaz有很多Bars

Foo.rb

has_many :bars
accepts_nested_attributes_for :bars

Bar.rb

belongs_to :Foo
belongs_to :Baz

Baz.rb

has_many :bars

視圖/ FOOS / _form.html.haml

= f.simple_fields_for :bars do |p|
   = render "bar_fields", f: p

調出表單進行編輯時,如果某個特定Bar屬於某個Baz ,我想禁用其編輯。

對於它所渲染的每個bars ,我如何在視圖中檢查某個屬性的值是什么。 在這種情況下, Bar記錄中的Baz值是多少。

視圖/ FOOS / _form.html.haml

= f.simple_fields_for :bars, @foo.bars.not_belonging_to_a_certain_baz(baz_id) do |p|
   = render "bar_fields", f: p

Bar.rb

scope :not_belonging_to_a_certain_baz, ->{ |baz_id| where("bars.baz_id != ?", baz_id) }

或者,如果無法使用范圍,則可以在部分渲染bar_fields時分別檢查每個條形:

視圖/ FOOS / _form.html.haml

= f.simple_fields_for :bars, do |p|
   = render "bar_fields", f: p if p.object.baz_id != baz_id

我發現了類似的東西,這就是我所做的

_form.html.haml

= f.simple_fields_for :bars do |p|
    - if f.object.baz_id == baz_id
        = render "bar_fields", f: p
    - else
        = render "bar_fields_readonly", f: p

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM