Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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 3 RubyonRails将id传递给新的创建表单_Ruby On Rails 3_Rails Models - Fatal编程技术网

Ruby on rails 3 RubyonRails将id传递给新的创建表单

Ruby on rails 3 RubyonRails将id传递给新的创建表单,ruby-on-rails-3,rails-models,Ruby On Rails 3,Rails Models,好吧,我已经到处找了,看了教程,看了视频,但我还是没有找到任何地方。我在这里读过类似的问题,但问题更复杂或缺乏答案-所以这里是 我有帐户和发票。显示帐户时,我希望有一个与该帐户相关的“创建新发票”链接。(稍后,我希望在创建发票时使用select字段来选择帐户,但我将把它留给另一个麻烦处理) 这是我的模型。。。 账户: 这是发票控制器中的内容: def new @invoice = Invoice.new(:account_id => params[:account_id]) res

好吧,我已经到处找了,看了教程,看了视频,但我还是没有找到任何地方。我在这里读过类似的问题,但问题更复杂或缺乏答案-所以这里是

我有帐户和发票。显示帐户时,我希望有一个与该帐户相关的“创建新发票”链接。(稍后,我希望在创建发票时使用select字段来选择帐户,但我将把它留给另一个麻烦处理)

这是我的模型。。。 账户:

这是发票控制器中的内容:

def new
  @invoice = Invoice.new(:account_id => params[:account_id])
  respond_to do |format|
  format.html # new.html.erb
  format.json { render :json => @invoice }
  end
end

def create
  @invoice = Invoice.new(params[:invoice])
   ....
end
以上是我认为我错了的地方,但我现在不知道该怎么说。我完全是一个初学者,任何帮助解决这个功能肯定会教我


谢谢您的时间。

您没有发布表单的代码,但我猜您正在使用文本字段来处理
帐户
关联。这是错误的

如果使用文本字段,rails将尝试将其存储为字符串=>
帐户(#2281084000)预期的get字符串(#2267210740)

您需要使用某种类型的关系字段,如下拉列表或其他什么来选择已经存在的帐户之一


这里有很多很好的例子,这可能会对您有所帮助:

当您单击
/views/accounts/show
页面上的
新发票
链接时,我想您希望您的新发票属于此帐户

因此,在表单中,您不必让用户选择帐户。例如,您可以将相应字段替换为
隐藏的\u字段

<%= f.hidden_field :account_id, :value => params[:account_id] %>
params[:帐户\u id]>
同样在控制器的
new
操作中,将
@invoice=invoice.new(:account\u id=>params[:account\u id])
替换为
@invoice=invoice.new


希望这能有所帮助。

您的错误在发票控制器中,因此最好在问题中显示相应的代码以及相关代码form@siekfried谢谢,我已经更新以显示控制器的代码,该表单只是scaffold为新发票生成的通用表单。这有用吗?@siekfried给了我一个名字错误。。。你的意思可能是
[发票]
[:发票]
一样吗?我也试过了,但没有成功。您好,表单的代码是用scaffold

生成的,您可以看到它是一个文本字段。但是,当点击新发票链接时,帐户id应该传递到哪种字段?显然,在这种情况下,用户不希望在进入帐户页面并单击新发票后使用下拉/或自动完成来选择帐户。太棒了,谢谢@siekfried-这非常有效!也给了我一些关于它应该如何工作的见解,非常感谢。
<p id="notice"><%= notice %></p>
<p>
  <b>Name:</b>
  <%= @account.name %>
</p>
<%= link_to 'New Invoice', new_invoice_path(:account_id=>@account.id) %>
<%= link_to 'Edit', edit_account_path(@account) %> |
<%= link_to 'Back', accounts_path %>
app/controllers/invoices_controller.rb:45:in `new'
app/controllers/invoices_controller.rb:45:in `create'
def new
  @invoice = Invoice.new(:account_id => params[:account_id])
  respond_to do |format|
  format.html # new.html.erb
  format.json { render :json => @invoice }
  end
end

def create
  @invoice = Invoice.new(params[:invoice])
   ....
end
<%= f.hidden_field :account_id, :value => params[:account_id] %>