Ruby on rails 尝试将Sinatra样式的表单移动到Rails中时的混乱
为了学习rails,我正在尝试构建一个应用程序,用户可以通过Twilio购买电话号码。最初,我用两个模型来实现这一点;用户有许多电话号码,这些电话号码属于用户。我想我已经处理了这个部分,但我困惑的是如何实现 (1) 搜索电话号码 (2) 一旦选择了该数字,将其填充到表单中,将其与其他信息一起推送到数据库中 我在看这个医生想弄清楚-- 但是,它是用Sinatra编写的,Sinatra是一个轻量级ruby框架,我最有经验的是完成Michael Hartl的《Rails》一书。控制器和视图的啮合让我很困惑 看着它,我想我需要创建一个新的控制器,比如find_numbers,它有一个新的、create和show动作。创建操作将呈现phone_numbers控制器的新操作,然后将其发布到数据库 但是,这里有一件棘手的事情。我不知道如何将不在数据库中的信息字段移动到另一个视图 例如,假设我在find_numbers视图中有这个Ruby on rails 尝试将Sinatra样式的表单移动到Rails中时的混乱,ruby-on-rails,ruby,sinatra,Ruby On Rails,Ruby,Sinatra,为了学习rails,我正在尝试构建一个应用程序,用户可以通过Twilio购买电话号码。最初,我用两个模型来实现这一点;用户有许多电话号码,这些电话号码属于用户。我想我已经处理了这个部分,但我困惑的是如何实现 (1) 搜索电话号码 (2) 一旦选择了该数字,将其填充到表单中,将其与其他信息一起推送到数据库中 我在看这个医生想弄清楚-- 但是,它是用Sinatra编写的,Sinatra是一个轻量级ruby框架,我最有经验的是完成Michael Hartl的《Rails》一书。控制器和视图的啮合让我很
<form method="POST">
<label>near US postal code (e.g. 94117): </label><input type="text" size="4" name="in_postal_code"/><br/>
<label>near this other number (e.g. +4156562345): </label><input type="text" size="7" name="near_number"/><br/>
<label>matching this pattern (e.g. 415***EPIC): </label><input type="text" size="7" name="contains"/><br/>
<input type="submit" value="SEARCH"/>
</form>
对于“创建视图”
<%= numbers.each do |number| %>
<form method='POST' action='/buy-number'>
<label><%=number.friendly_name %></label>
<input type='hidden' name='PhoneNumber' value='#{number.phone_number}' />
<input type='submit' value='BUY' /></form>
<% end %>
但是我得到了错误
undefined local variable or method `numbers' for #<#<Class:0x597cc48>:0x5979570>
未定义的局部变量或方法“numbers”#
好吧,比这清楚多了。我最初的问题是,我不理解rails是如何处理表单的,以及它是否能够接收到未连接到数据库的字段的信息
帮助很大,下面是我的控制器现在的样子:
class FindNumbersController < ApplicationController
def new
@user = current_user
end
def create
@user = current_user
render 'find_numbers/show'
end
def show
@user = current_user
client = Twilio::REST::Client.new(@user.twilio_account_sid, @user.twilio_auth_token)
search_params = {}
%w[in_postal_code near_number contains].each do |p|
search_params[p] = params[p] unless params[p].nil? || params[p].empty?
end
local_numbers = client.account.available_phone_numbers.get('US').local
@numbers = local_numbers.list(search_params)
end
end
类findnumberscocontroller
我仍然对表演有问题,但这超出了这个问题的范围
undefined local variable or method `numbers' for #<#<Class:0x597cc48>:0x5979570>
class FindNumbersController < ApplicationController
def new
@user = current_user
end
def create
@user = current_user
render 'find_numbers/show'
end
def show
@user = current_user
client = Twilio::REST::Client.new(@user.twilio_account_sid, @user.twilio_auth_token)
search_params = {}
%w[in_postal_code near_number contains].each do |p|
search_params[p] = params[p] unless params[p].nil? || params[p].empty?
end
local_numbers = client.account.available_phone_numbers.get('US').local
@numbers = local_numbers.list(search_params)
end
end