Rails проблема select_tag в действиях show и index - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть select_tag для выбора элементов из списка, вот код:

<%= select_tag "Drinks", options_for_select([ "Water", "Soda", "Beer" ], "Water") %>

После отправки «воды» в качестве примера, оно не отображается в указателе и не отображается в разделе «Напитки».

Что я делаю не так?

Методы создания и обновления контроллеров

def create
    @facture = Facture.new(params[:facture])

    respond_to do |format|
      if @facture.save
        format.html { redirect_to @facture, :notice => 'Facture was successfully created.' }
        format.json { render :json => @facture, :status => :created, :location => @facture }
      else
        format.html { render :action => "new" }
        format.json { render :json => @facture.errors, :status => :unprocessable_entity }
      end
    end
  end


def update
    @facture = Facture.find(params[:id])

    respond_to do |format|
      if @facture.update_attributes(params[:facture])
        format.html { redirect_to @facture, :notice => 'Facture was successfully updated.' }
        format.json { head :ok }
      else
        format.html { render :action => "edit" }
        format.json { render :json => @facture.errors, :status => :unprocessable_entity }
      end
    end
  end        

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Вы должны использовать это:

select_tag "facture[drinks]", options_for_select([ "Water", "Soda", "Beer" ], "Water")

Метод create использует значения, отправленные в params [: facture], а использование "facture [напитков]" включит его в качестве параметров [: facture] [:напитки].

0 голосов
/ 24 сентября 2011

Вот как я поступаю (благодаря miligraf):

1 - пусть код в контроллерах / фактурах не тронут

2 - изменить код в views / factures / _form.html.erb:

до

<%= select_tag "facture", options_for_select([ "Water", "Soda", "Beer" ], "Water") %>

после

<%= select_tag "facture[drinks]", options_for_select([ "Water", "Soda", "Beer" ], "Water") %>
...