rails 将视图中的 "each" 参数传递给控制器
rails passing "each" argument in a view to a controller
我正在尝试将参数从视图中的 "each" 循环传递给控制器。我有一份合同清单。 'contract' 模型有一个 'signed' 属性,该属性为 nil 或包含日期时间(如果合同已签署)。我想在视图中列出所有合同,如果合同已签署则呈现静态部分,如果合同未签署则呈现 link 以签署合同。我首先在视图中呈现我的合同列表以及方法:
<%@contract.each do |contract| %>
<%= @contract.reference %>
<%= show_either_static_if_signed_or_link_if_not_signed %>
在我的 helpers 中,我定义了一个带有一些基本代码的 dry-运行 方法来尝试第一个合约
def show_either_static_if_signed_or_link_if_not_signed
@contract = Contract.find(1)
if @contrat.signed.nil?
render 'contracts/static_template'
else
render'contracts/template_with_a_link_to_sign_the_contract'
end
这对第一份合同来说效果很好。我现在想在模板的 "each" 循环中为每个合约部署此代码。我试过了
def show_either_static_if_signed_or_link_if_not_signed(contract)
if contrat.signed.nil?
render 'contracts/static_template'
else
render'contracts/template_with_a_link_to_sign_the_contract'
end
但是 'I get wrong number of arguments (0 for 1)' 因为我无法从模板到控制器获取 'contract' 参数。任何人都可以为我提供适当的语法来将参数从我视图的 "each" 循环传递给辅助方法吗?也欢迎就此问题提出其他建议。谢谢。
您的辅助方法 show_either_static_if_signed_or_link_if_not_signed
需要 1 个参数,但是,您在从视图调用它时没有传递任何参数。
更新您的视图以传递所需参数,如下所示:
<% @contract.each do |contract| %>
<%= contract.reference %>
<%= show_either_static_if_signed_or_link_if_not_signed(contract) %>
...
...
<% end %>
调用helper方法时需要传入contract...
<%@contract.each do |contract| %>
<%= contract.reference %>
<%= show_either_static_if_signed_or_link_if_not_signed(contract) %>
<% end %>
我正在尝试将参数从视图中的 "each" 循环传递给控制器。我有一份合同清单。 'contract' 模型有一个 'signed' 属性,该属性为 nil 或包含日期时间(如果合同已签署)。我想在视图中列出所有合同,如果合同已签署则呈现静态部分,如果合同未签署则呈现 link 以签署合同。我首先在视图中呈现我的合同列表以及方法:
<%@contract.each do |contract| %>
<%= @contract.reference %>
<%= show_either_static_if_signed_or_link_if_not_signed %>
在我的 helpers 中,我定义了一个带有一些基本代码的 dry-运行 方法来尝试第一个合约
def show_either_static_if_signed_or_link_if_not_signed
@contract = Contract.find(1)
if @contrat.signed.nil?
render 'contracts/static_template'
else
render'contracts/template_with_a_link_to_sign_the_contract'
end
这对第一份合同来说效果很好。我现在想在模板的 "each" 循环中为每个合约部署此代码。我试过了
def show_either_static_if_signed_or_link_if_not_signed(contract)
if contrat.signed.nil?
render 'contracts/static_template'
else
render'contracts/template_with_a_link_to_sign_the_contract'
end
但是 'I get wrong number of arguments (0 for 1)' 因为我无法从模板到控制器获取 'contract' 参数。任何人都可以为我提供适当的语法来将参数从我视图的 "each" 循环传递给辅助方法吗?也欢迎就此问题提出其他建议。谢谢。
您的辅助方法 show_either_static_if_signed_or_link_if_not_signed
需要 1 个参数,但是,您在从视图调用它时没有传递任何参数。
更新您的视图以传递所需参数,如下所示:
<% @contract.each do |contract| %>
<%= contract.reference %>
<%= show_either_static_if_signed_or_link_if_not_signed(contract) %>
...
...
<% end %>
调用helper方法时需要传入contract...
<%@contract.each do |contract| %>
<%= contract.reference %>
<%= show_either_static_if_signed_or_link_if_not_signed(contract) %>
<% end %>