Ruby on rails 从form_标记和modal传递给控制器的值错误
我有一个包含此代码的索引视图Ruby on rails 从form_标记和modal传递给控制器的值错误,ruby-on-rails,Ruby On Rails,我有一个包含此代码的索引视图 <% @jobs.each do |job| %> ... <div class="modal micromodal-slide" id="modal-1" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__co
<% @jobs.each do |job| %>
...
<div class="modal micromodal-slide" id="modal-1" aria-hidden="true">
<div class="modal__overlay" tabindex="-1" data-micromodal-close>
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title">
<header class="modal__header">
<h3 class="modal__title" id="modal-1-title">
Share Job
</h3>
<button class="modal__close" aria-label="Close modal" data-micromodal-close></button>
</header>
<main class="modal__content" id="modal-1-content">
<p>
Enter an email address below to share this job to a friend.
<%= form_tag({controller: "jobs",
action: "email_job",
job_id: job.id},
method: "post") do %>
<p><%= text_field_tag(:email_address, nil, placeholder: 'Email Address', :job_id => job.id)%></p>
<p><%= text_area(:message, :text, placeholder: 'Optional Message', size: "30x10") %></p>
<p><button class="btn">Send</button></p>
<% end %>
</p>
</main>
</div>
</div>
</div>
...
...
分担工作
在下面输入电子邮件地址以将此作业共享给朋友。
作业id)%>
发送
...
因此,对于每个作业,我都有一个共享链接,当用户单击该链接“共享”作业时,他们会得到一个显示表单的模式弹出窗口。我的问题是
job.id
为每个作业返回相同的作业id(数据库中的第一个作业)。您可以将其设置为普通嵌套资源并使用虚拟模型:
resources :jobs do
resources :shares
end
除了调用valid?
而不是保存之外,该控制器只是普通的嵌套CRUD控制器
class SharesController < ApplicationController
before_action :set_job
# POST /jobs/:job_id/shares
def create
if @share.valid?
# @todo send email
redirect_to @job, success: 'Job shared'
else
render :new
end
end
private
def set_job
@job = Job.find(params[:job_id])
end
def job_params
params.require(:share).permit(:email_address, :message)
end
end
class SharesController
您可以将其设置为普通嵌套资源并使用虚拟模型:
resources :jobs do
resources :shares
end
除了调用valid?
而不是保存之外,该控制器只是普通的嵌套CRUD控制器
class SharesController < ApplicationController
before_action :set_job
# POST /jobs/:job_id/shares
def create
if @share.valid?
# @todo send email
redirect_to @job, success: 'Job shared'
else
render :new
end
end
private
def set_job
@job = Job.find(params[:job_id])
end
def job_params
params.require(:share).permit(:email_address, :message)
end
end
class SharesController
这是一个模式问题,模式代码需要唯一的id。请参阅下面我的解决方案。注:我为id添加了id=“modal-”
<div class="modal micromodal-slide" id="modal-<%=job.id%>" aria-hidden="true">
<div class="modal__overlay" tabindex="-1" data-micromodal-close>
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-<%=job.id%>-title">
<header class="modal__header">
<h3 class="modal__title" id="modal-<%=job.id%>-title">
Share Job
</h3>
<button class="modal__close" aria-label="Close modal" data-micromodal-close></button>
</header>
<main class="modal__content" id="modal-<%=job.id%>-content">
<p>
Enter an email address below to share this job to a friend.
<%= form_tag({controller: "jobs",
action: "email_job",
job_id: job.id},
method: "post") do %>
<p><%= text_field_tag(:email_address, nil, placeholder: 'Email Address', :job_id => job.id)%></p>
<p><%= text_area(:message, :text, placeholder: 'Optional Message', size: "30x10") %></p>
<p><button class="btn">Send</button></p>
<% end %>
</p>
</main>
</div>
</div>
</div>
分担工作
在下面输入电子邮件地址以将此作业共享给朋友。
作业id)%>
发送
这是一个模式问题,模式代码需要唯一的id。请参阅下面我的解决方案。注:我为id添加了id=“modal-”
<div class="modal micromodal-slide" id="modal-<%=job.id%>" aria-hidden="true">
<div class="modal__overlay" tabindex="-1" data-micromodal-close>
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-<%=job.id%>-title">
<header class="modal__header">
<h3 class="modal__title" id="modal-<%=job.id%>-title">
Share Job
</h3>
<button class="modal__close" aria-label="Close modal" data-micromodal-close></button>
</header>
<main class="modal__content" id="modal-<%=job.id%>-content">
<p>
Enter an email address below to share this job to a friend.
<%= form_tag({controller: "jobs",
action: "email_job",
job_id: job.id},
method: "post") do %>
<p><%= text_field_tag(:email_address, nil, placeholder: 'Email Address', :job_id => job.id)%></p>
<p><%= text_area(:message, :text, placeholder: 'Optional Message', size: "30x10") %></p>
<p><button class="btn">Send</button></p>
<% end %>
</p>
</main>
</div>
</div>
</div>
分担工作
在下面输入电子邮件地址以将此作业共享给朋友。
作业id)%>
发送
我在上面添加了模式代码。我想我需要一个或多个div的唯一id。我在上面添加了模式代码。我想我需要一个或多个div的唯一id。谢谢这个max…这是一个有趣的方法。很抱歉这么麻烦,但我的问题是我使用的模式。请看我发布的解决方案。谢谢这个max…这是一个有趣的方法。很抱歉这么麻烦,但我的问题是我使用的模式。请参阅我发布的解决方案。