如何在rails视图中使用键值哈希属性的输入?

时间:2017-12-08 17:49:42

标签: ruby-on-rails jsonb actionview

我的计划模型包含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 %>

1 个答案:

答案 0 :(得分:1)

你需要告诉输入字段它们是嵌套的hash / json,还要在控制器上,首先在视图上:

<%= form.input "monday[start]" %>
<%= form.input "monday[end]" %>

在控制器上:

def schedule_params
  params.require(:schedule).permit(:monday => [:start, :end])
end

然后你应该好好去