gpt4 book ai didi

ruby-on-rails - 如何将 “dynamically add options” 转换为 'form_for'?

转载 作者:数据小太阳 更新时间:2023-10-29 08:01:04 24 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 3.2.2。为了实现“动态生成的”AJAX 样式文件上传表单我想“动态添加选项” FormHelper#form_for 满足某些条件时的声明。也就是说,此时我正在使用如下代码(请注意,我正在使用 merge 方法以便向 form_for 方法添加选项):

<%
if @article.is_true? && (@article.is_black? || && @article.is_new?)
form_options = {:multipart => true, :target => "from_target_name"}
else
form_options = {}
end
%>
<%= form_for(@article, :remote => true, :html => {:id => "form_css_id"}.merge(form_options)) do |form| %>
...
<% end %>

不过,我觉得上面的代码被劫持的太多了。

有没有更好的方法来完成我正在做的事情?例如,我可以从 View 模板访问一些(我不知道的)实例变量,名为 as-like @form 和“工作”以便更改相关选项以及我想要的?或者,我应该在某处声明一个辅助方法吗?您建议如何进行?


顺便说一句:由于上传过程是通过使用 HTML iframe 处理的,所以我使用的是 remotipart gem 以实现 AJAX 样式的文件上传表单 - 我不知道此信息是否可以帮助某人...

最佳答案

这看起来很适合辅助方法。在您看来:

<%= form_for(@article, :remote => true, :html => article_form_options(@article, :id => "form_css_id")) do |form| %>
...
<% end %>

app/helpers/articles_helper.rb

module ArticlesHelper
def article_form_options(article, defaults = {})
extras = if article.is_true? && (article.is_black? || article.is_new?)
{ :multipart => true, :target => 'form_target_name' }
else
{}
end

defaults.merge(extras)
end
end

Helpers 是一个很好的地方来保存对于 View 来说太复杂但仍然与 View 相关的逻辑。

关于ruby-on-rails - 如何将 “dynamically add options” 转换为 'form_for'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11944638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com