繁体   English   中英

Ruby on Rails:使用表单提交传递条件隐藏值

[英]Ruby on Rails: passing conditional hidden values with form submit

简而言之:我的表单具有2个文本字段,分别用于值:title和:title_de。 我需要在提交时自动将值:lang传递为“ eng”或“ de”,具体取决于:title的字段是否为空。 怎么做?

编辑:用于创建的控制器代码:

def create
  @article = Article.new(article_params)

  if @article.save
    redirect_to @article
  else
    render 'new'
  end
end

更新

在控制器中分配lang解决方案:

def create
  @article = Article.new(article_params)

  @article.lang = params[:title].blank? ? "de" : "eng"

  if @article.save
    redirect_to @article
  else
    render 'new'
  end
end

或者,如果您愿意,可以使用javascript / jquery来获取:title的值,然后在提交表单之前将正确的值分配给:lang

片段:

 $('#my-button').on('click', function() { event.preventDefault(); var title = $('#title').val(); if(title == "") { $('#lang').val("de"); } else { $('#lang').val("eng"); } // change to $('#my-form').submit(); alert($('#lang').val()); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form id="my-form"> title: <input type="text"name="title" id="title"/><br> title_de: <input type="text" name="title_de" id="title_de"/><br> <input type="hidden" id="lang" name="lang" /> <input type="submit" id="my-button" /> </form> 

当表单字段保留为空时,它返回nil。 您可以检查nil并在控制器中设置语言:

if params[:title] == "nil"
# set the language
else 
# title is not nil, do something else
end

您也可以使用javascript在视图中执行此操作,但是如果用户禁用了javascript,则会出现问题。

使用javascript可以做到

In your view add hidden_file_tag
<%= hidden_filed_tag :langauge, id: "langauge" %>

and in javascript
$('#title').on("change",function(){
  if($(this).val() == ""){
    $("#langauge").val('eng')
  }else{
    $("#langauge").val('de')
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM