Search code examples
ruby-on-railsnested-attributestime-select

undefined method with time_select


I am trying to use a time select with locals passed to the partial, but I am getting the following error

undefined method `open_time' for #<Merchant:0x007fb41fd0aa90>

Partial Call

= form_for @merchant, :url => admin_merchant_path(@merchant) do |form|
      #account-panel.mdl-tabs__panel
        = render :partial => 'venue', :locals => {:address_fields => form}
        = render :partial => 'hours', :locals => {:hour_fields => form}

Rendered Partial

.mdl-cell.mdl-cell--12-col
  /h3.mdl-typography--display-1.teal-heading= t('.trading_hours_title')
  - (0..6).each do |i|
    li.mdl-list__item.mdl-list__item--two-line
      span.mdl-list__item-primary-content
        = Date::DAYNAMES[i]
        span.mdl-list__item-sub-title
        = hour_fields.time_select :open_time, {:minute_step => 30, :ampm => true}

Merchant Model

has_many :trading_hours, dependent: :destroy
accepts_nested_attributes_for :trading_hours

Trading Hour Model

belongs_to :merchant

Solution

  • you can do something like this(starting from the last line of your mentioned code):

    <%= hour_fields.fields_for :trading_hours do |trading_field| %>
       <%= trading_field.time_select :open_time, {:minute_step => 30, :ampm => true} %>
    <% end %>
    

    And in Merchants controller action build trading_hours if you don't have any trading_hour:

    @merchant.trading_hours.build
    

    PS: This is is ERB(I know only this :) )