Rails:资源和表单

前言:我不确定资源是什么。

我需要这个表单(通过user/sign_up路由工作)才能在我的“离线页面”上工作 – 因此用户仍然可以在我的应用程序关闭时进行注册。 我的application_controller调用:filter_before, :except => [:offline] ,我的registrations_controller有一个:skip_filter_before动作。 (它被称为行动吗?)

  resource_name, :url => registration_path(resource_name)) do |f| %>  


我的Registration_controller:

 class RegistrationsController  redirect_location(resource_name, resource) else set_flash_message :notice, :inactive_signed_up, :reason => resource.inactive_message.to_s if is_navigational_format? expire_session_data_after_sign_in! respond_with resource, :location => after_inactive_sign_up_path_for(resource) end else clean_up_passwords(resource) respond_with_navigational(resource) { render_with_scope :new } end end ... end 

路线:

  confirm_account /confirm_account(.:format) {:controller=>"confirmations", :action=>"confirm_account"} sign_up /sign_up(.:format) {:action=>"sign_up", :controller=>"user/sign_up"} new_user_session GET /user/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"} user_session POST /user/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"} destroy_user_session GET /user/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"} user_password POST /user/password(.:format) {:action=>"create", :controller=>"devise/passwords"} new_user_password GET /user/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"} edit_user_password GET /user/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"} PUT /user/password(.:format) {:action=>"update", :controller=>"devise/passwords"} cancel_user_registration GET /user/cancel(.:format) {:action=>"cancel", :controller=>"registrations"} user_registration POST /user(.:format) {:action=>"create", :controller=>"registrations"} new_user_registration GET /user/sign_up(.:format) {:action=>"new", :controller=>"registrations"} edit_user_registration GET /user/edit(.:format) {:action=>"edit", :controller=>"registrations"} PUT /user(.:format) {:action=>"update", :controller=>"registrations"} DELETE /user(.:format) {:action=>"destroy", :controller=>"registrations"} user_confirmation POST /user/confirmation(.:format) {:action=>"create", :controller=>"confirmations"} new_user_confirmation GET /user/confirmation/new(.:format) {:action=>"new", :controller=>"confirmations"} GET /user/confirmation(.:format) {:action=>"show", :controller=>"confirmations"} user_unlock POST /user/unlock(.:format) {:action=>"create", :controller=>"devise/unlocks"} new_user_unlock GET /user/unlock/new(.:format) {:action=>"new", :controller=>"devise/unlocks"} GET /user/unlock(.:format) {:action=>"show", :controller=>"devise/unlocks"} editreject_admin GET /admin/:id/editreject(.:format) {:action=>"editreject", :controller=>"admin"} reject_admin GET /admin/:id/reject(.:format) {:action=>"reject", :controller=>"admin"} accept_admin GET /admin/:id/accept(.:format) {:action=>"accept", :controller=>"admin"} entries_admin_index GET /admin/entries(.:format) {:action=>"entries", :controller=>"admin"} preferences_admin_index GET /admin/preferences(.:format) {:action=>"preferences", :controller=>"admin"} admin_index GET /admin(.:format) {:action=>"index", :controller=>"admin"} about_entries GET /entries/about(.:format) {:action=>"about", :controller=>"entries"} all_entries GET /entries/all(.:format) {:action=>"all", :controller=>"entries"} myentries_entries GET /entries/myentries(.:format) {:action=>"myentries", :controller=>"entries"} rate_entry GET /entries/:id/rate(.:format) {:action=>"rate", :controller=>"entries"} submit_entry PUT /entries/:id/submit(.:format) {:action=>"submit", :controller=>"entries"} entry_comments POST /entries/:entry_id/comments(.:format) {:action=>"create", :controller=>"comments"} entry_comment DELETE /entries/:entry_id/comments/:id(.:format) {:action=>"destroy", :controller=>"comments"} entries GET /entries(.:format) {:action=>"index", :controller=>"entries"} POST /entries(.:format) {:action=>"create", :controller=>"entries"} new_entry GET /entries/new(.:format) {:action=>"new", :controller=>"entries"} edit_entry GET /entries/:id/edit(.:format) {:action=>"edit", :controller=>"entries"} entry GET /entries/:id(.:format) {:action=>"show", :controller=>"entries"} PUT /entries/:id(.:format) {:action=>"update", :controller=>"entries"} DELETE /entries/:id(.:format) {:action=>"destroy", :controller=>"entries"} /auth/:service/callback(.:format) {:controller=>"services", :action=>"create"} services GET /services(.:format) {:action=>"index", :controller=>"services"} POST /services(.:format) {:action=>"create", :controller=>"services"} root /(.:format) {:controller=>"entries", :action=>"index"} countdown /countdown(.:format) {:controller=>"application", :action=>"countdown"} 

设计案例中的“资源”是实际注册的内容。 在您的情况下,它很可能是一个用户。 但是,用户不会硬编码到Devise中,因此您可以拥有多种类型的用户,例如管理员或编辑者。 在这种情况下,为简单起见,当您阅读’资源’时,请考虑“用户”。

我的答案的其余部分不是真正的答案,只是要求更多细节。 如果我能帮忙,我会用正确的答案编辑这个:)

至于你的问题,我不是百分百肯定我明白你在问什么。 您是要在离线页面上显示注册表单还是尝试将注册数据发送到离线页面? 在任何一种情况下,您是否收到和错误或类似阻止您这样做? 如果您是,请发布错误或意外行为的详细信息。 发布routes.rb可能也会有所帮助,具体取决于您的问题。

还有一点我不清楚,是rails应用程序的离线页面部分还是托管在其他地方? 如果应用程序已关闭,则无法访问。

更新:

所以我的理解是你试图将用户注册表放在离线页面上? 如果是这样,试试这个。

在你的控制器中:

 def offline @user = User.new end 

在您的offline.html.erb视图中:

  <%= form_for(@user, :url => user_registration_path) do |f| %> <%= devise_error_messages! %> 

<%= f.label :email %>
<%= f.email_field :email %>

<%= f.submit "Sign up" %>

<% end %>

我认为您没有为您的离线操作设置路线,因此您需要这样做。 要快速简便地使用,请使用以下内容:

 match '/offline' => "welcome#offline" 

welcome是您的脱机操作所在的控制器的名称。

这对你有帮助吗?

这取决于您配置的registration_path ,您在路线中定义的内容,但未在此处说明。

还要检查rake routes的输出,以查看它在您的环境中的解释方式。 检查log/development.log以查看在显示解释的params如何处理表单提交是明智的。

至于什么resource ,是来自Devise还是您的应用程序?