Aqui está um pedaço de código que estou usando agora:
<%= f.select :project_id, @project_select %>
Como modificá-lo para tornar seu valor padrão igual a params[:pid]
quando a página é carregada?
ruby-on-rails
totocaster
fonte
fonte
Respostas:
Isso deve servir:
fonte
options_for_select
é o melhor caminho. É bom para qualquer situação, bom para edição de formulários também.Use o atributo correto da instância atual (por exemplo
@work.project_id
):fonte
select_tag
. Obrigado, isso realmente me ajudou também.options_for_select(..., f.object.project_id )
Rails 3.0.9
fonte
value3], default
O problema com todas essas respostas é que elas definem o campo para o valor padrão, mesmo se você estiver tentando editar seu registro.
Você precisa definir o padrão para o valor existente e, em seguida, única configurá-lo para o padrão atual, se você não tem um valor. Igual a:
Para quem não conhece,
f.object.field
use sempref.object
o nome do campo ao final.fonte
select2
plugin JS. Funciona perfeitamente se você estiver criando ou editando registros com o mesmo formulário e usando select2, especialmente com texto de espaço reservado.Tente o seguinte:
fonte
params[:pid]
não funcionou, mas o seu exemplo funcionou.se params [: pid] for uma string, que se vier de um formulário, provavelmente precisará usar
para que o item correto seja selecionado na lista de seleção
fonte
@project
variável com um ID da tabela do banco de dados, em vez de um título, esse código funcionou anexado à parte de trás doform.select
ajudante:selected: @project
Obrigado @danengleEncontrei solução e descobri que sou bastante inexperiente no RoR.
Dentro do controlador que gerencia a vista descrita acima, adicione isto:
fonte
fonte
Não consegui fazer isso funcionar e descobri que precisava adicionar o atributo html "selecionado" não apenas à
<option>
tag correta, mas também à<select>
tag. Os documentos da MDN sobre o atributo selecionado da tag select dizem:Isso significa que o código deve se parecer com:
fonte
fonte
Como alternativa, você pode definir o atributo: project_id no controlador, pois o primeiro argumento do f.select puxa esse atributo específico.
fonte
Se tentar imprimir o objeto f, você verá que há f.object que pode ser analisado para obter o item selecionado (aplicável a todas as versões do Rails> 2.3)
portanto, use o seguinte script para obter a opção selecionada apropriada:
fonte
Já está explicado, tentarei dar um exemplo
deixe a lista de seleção ser
Portanto, o código a seguir resulta em
Então, para fazer uma opção selecionada por padrão, temos que usar selecionado: valor .
se can_vote? retorna true, ele define selected: 1 e o primeiro valor será selecionado em outro segundo.
se as opções de seleção são apenas uma lista de matrizes em vez de hast, o selecionado será apenas o valor a ser selecionado, por exemplo, se
agora o selecionado levará apenas
fonte
A resposta de Mike Bethany acima trabalhou para definir um valor padrão quando um novo registro estava sendo criado e ainda tem o valor que o usuário selecionado mostra no formulário de edição. No entanto, adicionei uma validação de modelo e ela não me permitiu enviar o formulário. Aqui está o que funcionou para mim: ter uma validação de modelo em campo e mostrar um valor padrão, bem como o valor que o usuário selecionou no modo de edição.
validação do modelo
fonte
Isso deve funcionar para você. Apenas passa
{:value => params[:pid] }
para a variável html_options.fonte