【问题标题】:Undefined method `model_name' in Simple_formSimple_form 中未定义的方法“model_name”
【发布时间】:2013-09-02 13:15:31
【问题描述】:

所以我有这个 2 步 Twitter 登录,在用户必须输入他的电子邮件的页面上,我收到一个未定义的方法错误。

我的表单

<%= simple_form_for(@user, :as => "user", :url => account_create_path, :html => {:class => "form-inline"}) do |f| %>
  <%= f.input :email, :placeholder => User.human_attribute_name(:email), :class => "input-medium" %>
  <%= f.submit "Finish registration", :class => "btn btn-small" %>
<% end %>

我认为这是一个语法问题,但由于我对 Rails 还很陌生,所以我无法弄清楚出了什么问题。谷歌也不会告诉我:)

我的Accounts_controller.rb

def create
        data = session["devise.omniauth_data"]
        data[:email] = params[:user][:email]
        user = User.find_for_twitter_oauth(data)
        user.email = data[:email]

        if user.save
            flash[:notice] = I18n.t "devise.registrations.signed_up_but_unconfirmed"
            redirect_to root_path
        else
            flash[:error] = I18n.t "devise.omniauth_callbacks.failure",
                                                         :kind => data[:provider].titleize,
                                                         :reason => user.errors.full_messages.first
            render "users/omniauth_callbacks/add_email"
        end
    end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 simple-form


    【解决方案1】:

    在控制器中将变量user更改为实例变量@user,问题将得到解决。

    【讨论】:

    • 你的意思是在我的 Accounts_controller.rb 中?
    • 是的,其中 `user = User.find_for_twitter_oauth(data) user.email = data[:email]`
    • 所有其他人我只将他们(用户)留在该行@user ?
    • 啊,除了params[:user][:email]之外都是user
    • 我的荣幸:) 只有实例变量可以发送到视图,其他不能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多