2013-09-04 31 views
28

I utworzeniu formularzaJak dodać wartość domyślną do number_field w szynach?

<%= form_for [current_user,@product,@bid] do |f| %> 
    <p><%= f.number_field :bid_amount %></p> 
    <p><%= f.number_field :product_id %> 
    <p><%= f.submit 'Bid!' %></p> 
<% end %> 

W: product_id pole Chcę dodać @ product.id domyślnie, jak zaimplementować to? Proszę. Z góry dzięki. :)

Odpowiedz

56
<p><%= f.number_field :product_id, :value => @product.id %></p> 

więcej szczegółów na temat: NumberField

+0

Jak to naprawić? Jak każda wartość, jaką ktoś wpisze na to pole, nadal przyjmuje tylko wartość domyślną? – RSB

+0

Czy możesz to wyczyścić ... Nie dostaję –

+0

Żadna wartość domyślna nie wyświetli się, gdy nic nie zostanie wprowadzone przez użytkownika w tym polu, w przeciwnym razie zajmie wartość wejściową podaną przez użytkownika ....... tak jak w polu tekstowym –

0

Wystarczy dodać @ product.id do swojego pola.

w tym przykładzie <% = f.number_field: product_id @ product.id%>

+1

To nie zadziała. Błąd: niezdefiniowana metoda "scalania" dla 2: Fixnum – hedgesky

6

Wystarczy:

<p><%= f.number_field :product_id, :value => @product.id %></p> 
2

jestem zakładając, że oferta należy do produktu. Dlatego product_id nie powinien być w ogóle widoczny dla użytkownika. Jako numer identyfikacyjny jest bez znaczenia i musi być ustawiony na prawidłowy produkt dla wszystkich ofert.

Działanie na formularzu będzie automatycznie oznaczało, że zostanie poprawnie ustawione w bazie danych.

0

Użytkownik user740584 ma rację, użytkownik nie powinien mieć możliwości edycji product_id.

Jeśli naprawdę trzeba go na formularzu można użyć

<%= f.hidden_field :product_id %> 
-1

można to zrobić, jeśli chcesz ustalonej wartości

<%= f.number_field :product_id , value: @product.id %> 

ale problem pozostaje, jeśli starają się edytuj później, stara wartość pozostanie tam, nie sądzę, że jest to problem w przypadku id.