0

Railsアプリでsimple_formフォームを作成しましたが、問題なく動作しました。

<%= simple_form_for([@folha, @servico], html: {class: 'well form-horizontal'}) do |f| %>
<%= f.association :pessoa, label: 'Funcionário' %>
<%= f.input :funcao, label: 'Função',collection: @funcoes %>
<%= f.input :modulos, label: 'Módulos', input_html: {class: 'span4'} %>
<%= f.input :valor, label: 'Valor por hora', as: :string ,input_html: {class: 'span1'} %>
<%= f.input :horas, as: :string, input_html: {class: 'span1'} %>
<%= f.button :submit, 'Incluir', class: 'btn btn-primary' %>
<% end %>

f.associationのドロップダウンの順序リストを変更するには、Pessoa.rbのデフォルトの.allメソッドを上書きしました。

def self.all
  order :nome
end

次に、ビューをレンダリングしようとすると、このエラーが発生しました。

wrong number of arguments (1 for 0)
Extracted source (around line #5):

2:  <h1>Preencher Pagamentos - Folha <%= "#{@folha.mes}/#{@folha.ano}" %> <small> <%= @folha.obs %> </small> </h1>
3: </div>
4: <%= simple_form_for([@folha, @servico], html: {class: 'well form-horizontal'}) do |f| %>
5: <%= f.association :pessoa, label: 'Funcionário' %>
6: <%= f.input :funcao, label: 'Função',collection: @funcoes %>
7: <%= f.input :modulos, label: 'Módulos', input_html: {class: 'span4'} %>

ビューでリストを並べ替える方法を見つけたほうがいいと思います。しかし、何
が起こっているのか非常に興味があります...

4

2 に答える 2

0

そもそも、これらの種類のメソッドをオーバーライドしないでください。

simple_formでそれを行う方法は次のとおりです

f.association : pessoa, :collection => Pessoa.order(:nome).all

https://github.com/plataformatec/simple_form/#associations

于 2012-07-29T01:20:17.510 に答える
0

ここで説明されているように、default_scope を使用できます。

モデルでこのマクロを使用して、モデルのすべての操作のデフォルト スコープを設定します。

あなたの場合default_scope order(:nome)

于 2014-07-08T10:30:50.130 に答える