我的计划模型包含jsonb(hash)
个字段。
create_table :schedules do |t|
t.jsonb :monday
t.jsonb :tuesday
t.jsonb :wednesday
t.timestamps null: false
end
schedule = Schedule.create(monday: {start: '8:00', end: '21:30'})
因此,我尝试将此start, end
属性显示为显示/编辑表单的输入。
我知道这个解决方案错误(undefined method
输入'为开始,结束)`。我怎么能显示jsonb哈希的输入?或者可能有更好的解决方案?
<%= form_for @excursion do |f| %>
<%= f.fields_for :schedule do |ff| %>
<%= ff.fields_for :monday do |fff| %>
<%= fff.input :start %>
<%= fff.input :end %>
<% end %>
<% end %>
<%= f.submit 'save' %>
<% end %>
答案 0 :(得分:1)
你需要告诉输入字段它们是嵌套的hash / json,还要在控制器上,首先在视图上:
<%= form.input "monday[start]" %>
<%= form.input "monday[end]" %>
在控制器上:
def schedule_params
params.require(:schedule).permit(:monday => [:start, :end])
end
然后你应该好好去