2010-01-02 1 views
16

Я хотел бы использовать formtastic для создания формы, но у меня нет модели, связанной с этим (форма входа с именем пользователя, паролем и URL-адресом openid).Есть ли способ создать форму с formtastic без модели?

Конечно, я мог бы создать модель для этого, но эта модель была просто взломана без какого-либо полезного кода.

ответ

44

Вы можете передать строку вместо модели, которая будет использоваться для генерации имен полей:

<% semantic_form_for 'user', :url => 'login' do |f| %> 
    <% f.inputs :name => 'Login Details' do %> 
     <%= f.input :username %> 
     <%= f.input :password %> 
    <% end %> 
<% end %> 

Который будет производить что-то вроде:

<form action="/login" class="formtastic user" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="E/NksKRd7Twh4nGp1Qc8jBQNfqYDn8gg6sWdTdCtl+g=" /></div> 
    <fieldset class="inputs"><legend><span>Login Details</span></legend><ol> 
     <li class="string required" id="user_username_input"><label for="user_username">Username<abbr title="required">*</abbr></label><input id="user_username" name="user[username]" size="50" type="text" /></li> 
     <li class="password required" id="user_password_input"><label for="user_password">Password<abbr title="required">*</abbr></label><input id="user_password" name="user[password]" size="50" type="password" /></li> 
    </ol></fieldset> 
</form> 

Но вы должны быть более конкретным с вашими параметрами, поскольку formtastic не сможет определить, какие типы полей он должен использовать, все по умолчанию будут использовать текстовые поля (хотя он автоматически делает поля с именами полей полей типа password).

Лучший способ сделать это, хотя и с моделью сеансов, посмотреть, как работает authlogic (http://github.com/binarylogic/authlogic).

+1

Для тех из вас, кто задается вопросом, почему приведенный выше синтаксис не работает для новых версий рельсов, используйте <% = semantic_form_for%> вместо <% %> – Abdo