首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义方法`user_verification_path‘(has_one关系)

未定义方法`user_verification_path‘(has_one关系)
EN

Stack Overflow用户
提问于 2016-06-17 17:57:12
回答 1查看 42关注 0票数 0

我和has_one和user有一个关系。我想做一张同时引用两者的表格!!我该怎么做?我遇到了这个错误!谢谢!

错误日志:

代码语言:javascript
复制
ActionView::Template::Error (undefined method `user_verification_path' for #<#<Class:0x007fcb8bb4e8e0>:0x007fcb89e71998>):
    1: <%= form_for([@user, @user.verification]) do |f| %>
    2: 	<%= f.email_field :paypal_email, :class => 'form-control', :placeholder => "Paypal Email", id: 'Pemail' %>
    3: <%= f.text_field :paypal_firstname, :class => 'form-control', :placeholder => "Paypal FirstName", id: 'PfirstName' %>
    4: <%= f.text_field :paypal_lastname, :class => 'form-control', :placeholder => "Paypal LastName", id: 'PlastName' %>
  app/views/users/paypal_verification.html.erb:1:in `_app_views_users_paypal_verification_html_erb__139977708174630313_70256084327900'

这里是我的表单paypal html

代码语言:javascript
复制
<%= form_for([@user, @user.verification]) do |f| %>
	<%= f.email_field :paypal_email, :class => 'form-control', :placeholder => "Paypal Email", id: 'Pemail' %>
<%= f.text_field :paypal_firstname, :class => 'form-control', :placeholder => "Paypal FirstName", id: 'PfirstName' %>
<%= f.text_field :paypal_lastname, :class => 'form-control', :placeholder => "Paypal LastName", id: 'PlastName' %>


<%= f.submit "verify", class: "btn btn-primary" %>
<% end %>

,这是我的控制器!

代码语言:javascript
复制
def paypal_verification
    # @verification = @user.verification.new
    @user = current_user
@verification = Verification.create(params[:verification])
@user.verification = @verification
end

Routes.rb

代码语言:javascript
复制
 devise_for :users ,
       :path => '' ,
       :path_names => {:sign_in => 'login', :sign_out => 'logout', :edit => 'profile'},
       :controllers => {:omniauth_callbacks => 'omniauth_callbacks',
                :registrations => 'registrations', :verifications => 'verifications'
              }


 resources :users, only: [:index, :show] do

 end
 resources :revisers
 resources :photos
 resources :pages

 #make sure to change this to user!!! instead of reservations!!!
resources :reviser do
  resources :reservations, only: [:create]
end


resources :user do
  resources :verifications, only: [:create]
end


get '/preload' => 'reservations#preload'
get '/preview' => 'reservations#preview'

get '/your_essays' => 'reservations#your_essays'
get '/your_reservations' => 'reservations#your_reservations'

post '/notify' => 'reservations#notify'
post '/your_essays' => 'reservations#your_essays'

get '/users/:id/paypal_verification' => 'users#paypal_verification'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-17 18:46:56

由于您正在执行嵌套路由以进行验证,rails将期望此路由:

代码语言:javascript
复制
 Prefix Verb   URI Pattern                            Controller#Action
 user_verifications POST   /user/:user_id/verifications(.:format) verifications#create

您可以检查bin/rails路线。

因此,在您的表单中,您需要使用user_verifications_path,但是由于您有实例变量,所以您需要在这里执行以下操作

代码语言:javascript
复制
<%= form_for([@user, @user.verification]) do |f| %>

这句话应该这么说

代码语言:javascript
复制
<%= form_for(Verification.new, url: user_verifications_path(@user)) do |f| %>

Uer验证将作为传递给控制器的新模型传递到/Uer/ID/ Verifications.new验证。这应该在verifications#create内部。你的问题中没有包括这个控制器。因此,如果这不起作用,请使用此方法更新您的问题。

编辑

如果您想更新已经创建的验证,那么对于PATH/或放置唯一的更改就是记录和路径的实例,因此它将转到/user/ID/verifications/VERIFICATIONID

你的表格需要这样写

代码语言:javascript
复制
form_for(@user.verification, url: user_verifications_path(@user, @user.verification)

希望它能帮上忙

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37887588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档