Добавление пользовательского поля ввода в formtastic? - PullRequest
5 голосов
/ 28 июля 2011

Я не могу разобраться или найти решение для очень простого вопроса: «Как я могу определить свое собственное поле ввода в formtastic?»

Вот что я получил:

<%= semantic_form_for @someFantasticVariable, :url => "/someFantasticUrl.html" do |f|%>  
    <%= f.inputs do %>
        <%= f.input :something_else_id, :required => true , :as => :select, :collection   => SomethingElse.find(:all), :label =>"The something else"%>
        <%= f.input :fantastic_max_cost, :label => "Budget (max cost)"%>  
    <%end%>


    <%= f.buttons do%>
        <%= f.commit_button :button_html => { :class => "primary", :disable_with =>     'Processing...', :id => "commitButton"}%>
    <%end%>
<%end%>

Теперь ..

Я хочу иметь очень простую вещь. Я хочу объявить поле, которое не является частью модели. Я хочу иметь поле даты, которое я могу использовать для вычисления некоторых вещей в моем контроллере. Поэтому я хочу сделать это:

<%= f.inputs do %>
    <%= f.input :something_else_id, :required => true , :as => :select, :collection   => SomethingElse.find(:all), :label =>"The something else"%>
    <%= f.input :fantastic_max_cost, :label => "Budget (max cost)"%>  
    <%= f.input :start_date, :as => :date , :label => "Start date"%>
<%end%>

Но apparetly я не позволил, и я не могу найти способ сделать это через мой ткнули прибегая к помощи. Любая помощь / идеи?

Ответы [ 2 ]

5 голосов
/ 28 июля 2011

Если у вас есть какой-либо атрибут, который не является частью вашей модели, то в модели должны существовать геттер и сеттер:

def start_date
end

def start_date=(arg)
end

Затем вы можете рассчитать свой персонал на контроллере или что угодно:

...
puts params[:somefantasticvariable][:start_date]
...

Но это быстрый формальный хак, вы должны найти какой-то лучший способ, например, неформальный ввод с некоторыми CSS и т. Д.

1 голос
/ 28 декабря 2013

Ruby предоставляет конструкцию без базы данных, которая называется attr_accessor. Это эквивалентно написанию методов установки и получения. Formtastic увидит этот атрибут похожим на атрибут, поддерживаемый базой данных.

В вашей @someFantasticVariable модели:

attr_accessor :start_date

Если вы используете attr_accessible в вашей @someFantasticVariable модели, обязательно добавьте туда переменную start_date:

attr_accessible :start_date

Поскольку атрибут не имеет типа, Formtastic не может получить поле ввода HTML для использования. Вам нужно будет вручную установить тип ввода, используя :as. Для вашего примера:

<%= f.input :start_date, :as => :date_select %>

Cite:

...