【发布时间】:2015-09-29 23:53:48
【问题描述】:
我正在尝试将实例变量传递给 form_for 中的占位符:
<h2>Sign up</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div class="field">
<%= f.label :number %>
<em>(add 1 + area code w/ no spaces; i.e. 15555555555)</em><br/>
<%= f.text_field :phone, :placeholder => @phone_number.phone_number %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true %>
</div>
当我这样做时,我得到 nil:NilClass 的“未定义方法‘phone_number’。 @phone_number 设置为与视图相同的控制器
...这里是对应的控制器
class Users::RegistrationsController < Devise::RegistrationsController
before_filter :configure_sign_up_params, only: [:create]
before_filter :configure_account_update_params, only: [:update]
#before_filter :update_sanitized_params, if: :devise_controller?
# GET /resource/sign_up
def new
@phone_number = PhoneNumber.find_or_create_by(phone_number: params[:phone_number][:phone_number])
redirect_to welcome_index_path
end
【问题讨论】:
-
语法看起来是正确的,但由于某种原因,
@phone_number是 nil。您能否发布设置@phone_number的控制器? -
类 PhoneNumbersController
-
抱歉,不小心按回车并发送了错误的文字。这是在我由 Devise 设置的注册控制器中:
-
class Users::RegistrationsController
-
@ztredded 再次编辑问题并发布控制器操作代码。不要放在 cmets 中。
标签: ruby-on-rails placeholder form-for