有没有办法在没有模型的情况下创建一个带有formtastic的表单?

时间:2010-01-02 12:26:48

标签: ruby-on-rails formtastic

我想使用formtastic创建表单,但我没有与之关联的模型(使用用户名,密码和openid URL的登录表单)。

当然我可以创建一个模型来做到这一点,但该模型只是一个没有任何有用代码的黑客。

1 个答案:

答案 0 :(得分:46)

您可以传递字符串而不是模型,该字符串将用于生成字段名称:

<% 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将无法确定应该使用哪些类型的字段,所有字段都默认为textfields(尽管它会自动生成名为password的字段密码类型字段)。

更好的方法是使用会话模型,查看authlogic(http://github.com/binarylogic/authlogic)的工作方式以获取更多信息。