Kom*_*mbo 6 ruby-on-rails ruby-on-rails-3
我目前有几种形式,我正在尝试更改提交它的按钮,如果我正在编辑或新操作.我创建了两个表单但是这个表面很糟糕,我现在只使用单个表单部分.
在我的部分结束时,我在表格的末尾有这样的东西:
<p>
<% if controller.action_name == 'new' %>
<%= f.submit "Create", :class => "pink_button"%> or
<% elsif controller.action_name == 'edit' %>
<%= f.submit "Update", :class => "pink_button"%> or
<% end %>
<%= link_to "cancel", :back %>
</p>
Run Code Online (Sandbox Code Playgroud)
这样,如果我创建一些新的,按钮显示"Create",如果它是用户试图完成的更新,则按钮显示"Update".这很有效,直到表单提交并且验证失败.
在我的控制器中,我正在捕捉失败的东西:
def update
@list = current_user.lists.find(params[:id])
if @list.update_attributes(params[:list])
redirect_to list_path(@list), :notice => "List '#{@list.name}' updated."
else
render :action => 'edit'
end
end
Run Code Online (Sandbox Code Playgroud)
因此,表单只是重新呈现.问题是,我不再在编辑路径上了.这意味着,我的表单按钮不再显示.
我正在尝试做什么约定?
谢谢
num*_*407 15
是的,这是在Rails中使用i18n默认处理的.翻译在ActionView中,如下所示:
en:
helpers:
select:
# Default value for :prompt => true in FormOptionsHelper
prompt: "Please select"
# Default translation keys for submit FormHelper
submit:
create: 'Create %{model}'
update: 'Update %{model}'
submit: 'Save %{model}'
Run Code Online (Sandbox Code Playgroud)
您需要做的就是f.submit(不通过"创建"或"编辑"等),翻译将完成剩下的工作.您可以通过将上面的yaml放入本地语言环境来覆盖这些内容.
如果你需要设置类,你可以传递nil,例如 f.submit nil, :class => 'whatev'
Sam*_*r C 13
Rails的方法是检查记录是否是新记录:
@list.new_record? ? "Create" : "Update"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5907 次 |
| 最近记录: |