Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 创造行动可以;t保存到数据库——将参数从一个窗体传递到另一个控制器';s_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 创造行动可以;t保存到数据库——将参数从一个窗体传递到另一个控制器';s

Ruby on rails 创造行动可以;t保存到数据库——将参数从一个窗体传递到另一个控制器';s,ruby-on-rails,ruby,Ruby On Rails,Ruby,现在我正在尝试构建一个应用程序,它能够搜索电话号码,购买电话号码,并将交易记录到数据库中 我认为这样做的方式是有两个控制器——(1)find_numbers控制器获取参数并搜索数字。(2)电话控制器购买所选号码并将参数保存到数据库中 这是一张我想做的事情的图表 虽然我可以搜索这些号码并购买这些号码,但我似乎无法将其保存到数据库中 它重定向我并告诉我没有填写正确的字段。 这使我认为find_numbers表单中的参数没有被接受为phones控制器创建操作的参数 下面是查找数字/显示 &l

现在我正在尝试构建一个应用程序,它能够搜索电话号码,购买电话号码,并将交易记录到数据库中

我认为这样做的方式是有两个控制器——(1)find_numbers控制器获取参数并搜索数字。(2)电话控制器购买所选号码并将参数保存到数据库中

这是一张我想做的事情的图表

虽然我可以搜索这些号码并购买这些号码,但我似乎无法将其保存到数据库中

它重定向我并告诉我没有填写正确的字段。

这使我认为find_numbers表单中的参数没有被接受为phones控制器创建操作的参数

下面是查找数字/显示

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

        <%= form_tag(:controller => "phones", :action => "create" ) do %>
            <%= hidden_field :original_number, params[:original_number] %>
            <%= hidden_field :name, params[:name] %>
            <%= hidden_field(:twilio_number,  number.phone_number) %>

            <div class="found_list">
                <div class="found_phone_number">
                    <%= label_tag(:number, number.friendly_name) %>
                </div>
                <div class="choose_found_number">
                 <%= submit_tag("Choose This Number", :class => "btn btn-large btn-success") %>
                </div>
            </div>
                <hr>
        <% end %>
    <% end %>
我需要对“创建”操作进行哪些编辑,使其采用“显示”操作向其发布的参数,然后将其保存到数据库中

我认为这可能是罪魁祸首:

@phone = @user.phones.build(params[:phone])
谢谢你一直支持我!任何指导都将不胜感激

以下是我点击手机时的调试器信息#通过查找号码/显示创建

--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
utf8: ✓
authenticity_token: RMvjP9PQt9hVEJE449pMqgqnFcreqvXtmZFEyU+641g=
original_number: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
  '1231231234': ''
name: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
  Example Name: ''
twilio_number: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
  '+18322415354': ''
commit: Choose This Number
action: create
controller: phones
手机模型

# == Schema Information
#
# Table name: phones
#
#  id              :integer          not null, primary key
#  name            :string(255)
#  twilio_number   :string(255)
#  original_number :string(255)
#  user_id         :integer
#  created_at      :datetime         not null
#  updated_at      :datetime         not null
#

class Phone < ActiveRecord::Base
      attr_accessible :name, :original_number, :twilio_number
      belongs_to :user

  validates :name, presence: true
  validates :twilio_number, presence: true
  validates :original_number, presence: true
  validates :user_id, presence: true

  default_scope order: 'phones.created_at DESC'

end
#==架构信息
#
#表名:电话
#
#id:整数不为空,主键
#名称:字符串(255)
#斜纹布编号:字符串(255)
#原始编号:字符串(255)
#用户id:integer
#创建时间:datetime非空
#更新时间:datetime非空
#
类Phone
试试这个

def create
    @user = current_user
    @phone = @user.phones.new(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.present?
      flash[:success] = "Phone Number Created!"
      redirect_to user_path
    else
      render new_find_number_path
      flash[:error] = "It looks like there were errors with the submission"
    end
end

从哪里是params[:phone]不是passedHi Amar,谢谢你的回复。是的,我不太确定在那里写什么。手机的参数是通过find_numbers/show(如上所示)上的表单存储的,但我不确定如何告诉create操作使用该表单中的参数,但您正在传递原始的_numbers、twilio_numbers等。请放入调试器或撬入控制器并检查参数。hash刚刚在帖子中添加了调试信息。它似乎正在将参数传递给它,尽管它重定向了我并突出显示了名称字段,好像它不知道该字段的信息。你认为发生了什么?电话模型中的字段是什么Amar,非常感谢你的指导!我尝试将表单改为form_for,而不是form_标记,并在第一个控制器的创建操作中设置@phone=@user.phones.new(params[:phone])。这样看来,它似乎起了作用。
def create
    @user = current_user
    @phone = @user.phones.new(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.present?
      flash[:success] = "Phone Number Created!"
      redirect_to user_path
    else
      render new_find_number_path
      flash[:error] = "It looks like there were errors with the submission"
    end
end