我正在使用 simple_form。我怎样才能有一个选择菜单和一个文本输入,并有类似Select or add another
.
该应用程序只会从选择菜单或文本输入中获取一个值。
验证具有其中一个或另一个但不是两者都有也很好,以避免用户混淆。
我正在使用 simple_form。我怎样才能有一个选择菜单和一个文本输入,并有类似Select or add another
.
该应用程序只会从选择菜单或文本输入中获取一个值。
验证具有其中一个或另一个但不是两者都有也很好,以避免用户混淆。
在您的 simple_form 中实施所谓的“组合框”
Jquery UI 有一个组合框:http: //jqueryui.com/autocomplete/#combobox
更花哨的东西: http ://demos.kendoui.com/web/combobox/index.html
这将使您尽可能地显示您的组合框。我认为没有用于验证的插件,因此您必须自己编写代码。
您可以尝试结合使用 JavaScript 和 Ruby 来解决此问题。如果用户想要输入不同的值,那么下拉列表中的可用值,您应该让 JS 监听该输入中的 keydown 事件并清除下拉列表,即:
$(".input_field").bind('keydown', function() {
$(".select_field").val('0') // this should be a default blank value
});
这将在用户键入时清除选择。同样,您想在用户从下拉列表中选择时清除输入,对吗?
$(".select_field").change(function() {
// Let's only clear the input field if the value is not the default null value
if ( $(this).val() != 0 ) {
$(".input_field").val('');
}
});
这将处理前端交互。在控制器中,您需要执行一些额外的逻辑:
def create
object.new(...)
if params[:select] and params[:input]
# Overwrite the select with the input value
object.attribute = params[:input]
end
object.save
end
我假设您希望输入值取代选择,因此如果它们提交最多,我们可以用输入值覆盖选择值,然后继续保存对象。
这是你要找的吗?不确定输入的值是否假设创建具有关系的新对象。希望这可以帮助。