我有一个非常标准的Rails应用程序,其标准格式如下:
<%= simple_form_for @foo_bar do |f| %>
<%= f.input :some_fields %>
<%= f.submit %>
<% end %>
按预期工作,但按钮上的标签最终
<input type="submit" name="commit" value="Update Foo bar">
或
<input type="submit" name="commit" value="Create Foo bar">
我遇到的问题是'Foo bar'。我知道这是一个驼峰案例模型类名称问题。我也知道我可以这样做:
<input type="submit" name="commit" value="<%= action_name == 'new' ? 'Create' : 'Update' %> Foo">
或
<%= f.submit "#{action_name == 'new' ? 'Create' : 'Update'} Foo Bar" %>
但只是想知道我是否有一种更优雅的方法?
答案 0 :(得分:1)
使用此表单渲染部分时,您可以发送参数。
<强> new.html.erb 强>
<%= render 'form', button: 'Create' %>
<强> edit.html.erb 强>
<%= render 'form', button: 'Update' %>
<强> _form.htm.erb 强>
<%= simple_form_for @foo_bar do |f| %>
<%= f.input :some_fields %>
<%= f.submit "#{button} Foo Bar" %>
<% end %>
答案 1 :(得分:1)
我遇到了同样的问题,而且比你想象的要容易得多;
对于f.submit按钮,您可以这样做:
<%= f.submit "Create Foo Bar" %>
或者你可以试试这个:
<%= f.submit "create foo bar".titleize %>
对于您可以执行的标记:
<%= f.label :create_foo_bar, "Create Foo Bar" %>
第一个论点并不像大多数人想的那样是标题。 Rails期望第一个参数是对象名称,因此如果你不传递带有真实标题的第二个参数(选项),它会自动使它成为标题。