Ruby on Rails - 在每个循环内将局部变量传递给局部变量(使用 Haml)
Ruby on Rails - passing locals to partial inside each loop (With Haml)
我有一个对象数组。我正在尝试遍历它并将结果输出到 table。我希望我的 table 列之一是渲染的部分(表单)。但无论我在哪一行提交,它总是向我发送最后一行输出的本地人。
这是 rails 的正常行为还是我做错了什么?
我的观点是:
%table.table.table-hover
%thead
%tr
%th User id
%th User email
%th Account name
%th Intercom Conversation
%tbody
- @users.each do |user|
%tr
%td= user.user_id
%td= user.user_email
%td= user.account_name
%td
- if user.intercom_conversation
%h4= user.intercom_conversation
= link_to('edit', '#', {class: 'edit'})
.conversation_edit
= render(partial: 'conversation_form', locals: {user_id: user.user_id, fault_id: @fault.fault_id})
我渲染的部分是:
= form_tag('update_conversation', method: 'get')
= hidden_field_tag(:fault_id, fault_id)
= hidden_field_tag(:user_id, user_id)
yes
= radio_button_tag(:conversation, 0)
no
= radio_button_tag(:conversation, 1)
ignored
= radio_button_tag(:conversation, 2)
= submit_tag('Change')
我想我应该说所有渲染(在浏览器中都是正确的并且没有引发错误)
提前致谢。
您正在输出一系列没有结束标记的空表单。您需要将块传递给 form_tag
并缩进内容以使其自动添加所需的 </form>
标签。
= form_tag('update_conversation', method: 'get') do
= hidden_field_tag(:fault_id, fault_id)
= hidden_field_tag(:user_id, user_id)
yes
= radio_button_tag(:conversation, 0)
no
= radio_button_tag(:conversation, 1)
ignored
= radio_button_tag(:conversation, 2)
= submit_tag('Change')
我有一个对象数组。我正在尝试遍历它并将结果输出到 table。我希望我的 table 列之一是渲染的部分(表单)。但无论我在哪一行提交,它总是向我发送最后一行输出的本地人。
这是 rails 的正常行为还是我做错了什么?
我的观点是:
%table.table.table-hover
%thead
%tr
%th User id
%th User email
%th Account name
%th Intercom Conversation
%tbody
- @users.each do |user|
%tr
%td= user.user_id
%td= user.user_email
%td= user.account_name
%td
- if user.intercom_conversation
%h4= user.intercom_conversation
= link_to('edit', '#', {class: 'edit'})
.conversation_edit
= render(partial: 'conversation_form', locals: {user_id: user.user_id, fault_id: @fault.fault_id})
我渲染的部分是:
= form_tag('update_conversation', method: 'get')
= hidden_field_tag(:fault_id, fault_id)
= hidden_field_tag(:user_id, user_id)
yes
= radio_button_tag(:conversation, 0)
no
= radio_button_tag(:conversation, 1)
ignored
= radio_button_tag(:conversation, 2)
= submit_tag('Change')
我想我应该说所有渲染(在浏览器中都是正确的并且没有引发错误)
提前致谢。
您正在输出一系列没有结束标记的空表单。您需要将块传递给 form_tag
并缩进内容以使其自动添加所需的 </form>
标签。
= form_tag('update_conversation', method: 'get') do
= hidden_field_tag(:fault_id, fault_id)
= hidden_field_tag(:user_id, user_id)
yes
= radio_button_tag(:conversation, 0)
no
= radio_button_tag(:conversation, 1)
ignored
= radio_button_tag(:conversation, 2)
= submit_tag('Change')