希望我能清楚我的问题。如果您需要进一步说明我的意思,请告诉我,我会尽我所能澄清一切。
我目前正在做一个简单的 Ruby on Rails 项目,我想在我的登录表单中添加一些交互性。目前,如果您单击“登录”链接,登录表单将正常工作,该链接会将您带到 new_user_sessions
页面。但我想切断重定向,当用户单击登录时,登录表单将在同一页面上大约 700 毫秒后显示。我打算只使用函数 show(700)
来显示登录表单。我遇到的问题是,我想我可以把这个登录表单放在布局目录中,这样用户就可以从每个页面登录。问题是我的登录表单依赖于来自 User_sessions(使用 authlogic) Controller 的 @user_session
对象。这是我的 User_sessions Controller 的 new.html.erb
文件包含的内容:
<%= form_for @user_session do |f| %>
<%= render '/shared/error_messages', :target => @user_session %>
<p>
<%= f.label :username %><br />
<%= f.text_field :username %><br />
</p>
<p>
<%= f.label :password %><br />
<%= f.password_field :password %><br />
</p>
<p class="button">
<%= f.submit "Submit" %>
</p>
<% end %>`
当用户单击登录链接时,我希望通过 show()
函数显示此表单。有什么办法可以做到这一点?也许通过在 application.html.erb
中使用某种 render
语句来呈现这个新的 User_sessions View ?谢谢你的帮助。
最佳答案
将您的登录表单放入部分:
app/views/user_sessions/_login.erb
<%= form_for user_session do |f| %>
<%= render '/shared/error_messages', :target => user_session %>
<p>
<%= f.label :username %><br />
<%= f.text_field :username %><br />
</p>
<p>
<%= f.label :password %><br />
<%= f.password_field :password %><br />
</p>
<p class="button">
<%= f.submit "Submit" %>
</p>
<% end %>
从您的布局渲染局部:
app/views/layout/application.html.erb
<% if @user_session %>
<%= render "user_sessions/login", :user_session => @user_session %>
<% end %>
最后,确保在适当的地方将 @user_session
设置为空的 UserSession 对象:
app/controllers/application_controller.rb
before_filter :set_user_session
protected
def set_user_session
# do some logic here to set @user_session when appropriate.
end
关于javascript - 将 Javascript 效果添加到 RoR 中的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3897926/