【问题标题】:How to properly call a parameter in the action of a <%= form_for create如何在 <%= form_for create 的操作中正确调用参数
【发布时间】:2012-10-09 12:01:23
【问题描述】:

我正在构建一个呼叫跟踪应用程序,用于学习 rails 和 twilio。现在,我有一个表单,当它被提交时,将 twilio 电话号码与其他参数一起记录到数据库中,然后购买电话号码。

我的这个功能有点落后,但我改变了一些东西,破坏了我在创建操作中调用参数的能力。

现在,当我运行代码时,我得到了错误:

Twilio::REST::RequestError in PhonesController#create

Missing PhoneNumber parameter. Please specify the phone number that you would like to purchase

这是我提交的表格:

    <% @numbers.each do |number| %>

            <%= form_for(@phone) do |f| %>
                <%= f.hidden_field :original_number, :value => params[:original_number] %>



                <%= f.hidden_field :name, :value => params[:name] %>
                <%= f.hidden_field :twilio_number,  :value => number.phone_number %>

                <div class="found_list">
                    <div class="found_phone_number">
                        <%= f.label :twilio_number, number.friendly_name %>
                    </div>
                    <div class="choose_found_number">
                    <%= f.submit "Choose This Number", :class => "btn btn-large btn-success" %>
                    </div>
                </div>
                    <hr>
            <% end %>
    <% end %>

这是我点击提交时调试器告诉我的内容:

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"/qJ6qATbNH2pZwxDPcKGifktWtAA5WrShbqb/2+lBbE=",
 "phone"=>{"original_number"=>"6463978797",
 "name"=>"Website",
 "twilio_number"=>"+16464900447"},
 "commit"=>"Choose This Number"}

这是我的创建操作

  def create
    @user = current_user
    @phone = @user.phones.build(params[:phone])
    client = Twilio::REST::Client.new(@user.twilio_account_sid, @user.twilio_auth_token)
    number = client.account.incoming_phone_numbers.create({:phone_number => params[:twilio_number]})
   if @phone.save && number.true
      flash[:success] = "Phone Number Created!"
      redirect_to user_path
    else
      render new_phone_path
      flash[:error] = "It looks like there were errors with the submission"
    end
  end

如果我编辑操作并将 params[:twilio_number] 替换为“+16464900447”,则它会起作用。

感谢您坚持到这里!您对我如何正确调用控制器中的 twilio_number 参数有什么想法吗?或者,您认为还有其他问题吗?

【问题讨论】:

    标签: ruby-on-rails ruby twilio


    【解决方案1】:

    我认为您的问题来自您的参数哈希格式错误,实际上是

    {
     "utf8"=>"✓",
     "authenticity_token"=>"/qJ6qATbNH2pZwxDPcKGifktWtAA5WrShbqb/2+lBbE=",
     "phone"=>{
       "original_number"=>"6463978797",
       "name"=>"Website",
       "twilio_number"=>"+16464900447"
     },
     "commit"=>"Choose This Number"
    }
    

    所以你可以看到params[:twilio_number]不存在,存在的是params[:phone][:twilio_number]

    当然,你的解决方案就像你正在做的那样工作

    @phone = @user.phones.build(params[:phone])
    

    您正在创建一个带有 params[:phone] 的电话实例,它作为 :twilio_number

    【讨论】:

      【解决方案2】:

      我试过@phone.twilio_number,而不是params[:twilio_number],它似乎奏效了!

      【讨论】:

        猜你喜欢
        • 2017-05-19
        • 2016-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-19
        • 1970-01-01
        相关资源
        最近更新 更多