Ruby on rails 在表单中为提交按钮提供不同的名称

Ruby on rails 在表单中为提交按钮提供不同的名称,ruby-on-rails,forms,Ruby On Rails,Forms,我有一个应用程序中所有表单的模板,但是,我想在不同的操作中为表单的提交按钮定义不同的名称(例如,当我编辑一篇文章时,我想从提交按钮显示文本更新文章,当我添加一篇文章时,我想从提交按钮显示文本添加文章)。有没有办法做到这一点,但保持呈现相同的表单模板 <%= form_for @article do |f| %> <% if @article.errors.any? %> <div id="error_explanation">

我有一个应用程序中所有表单的模板,但是,我想在不同的操作中为表单的提交按钮定义不同的名称(例如,当我编辑一篇文章时,我想从提交按钮显示文本更新文章,当我添加一篇文章时,我想从提交按钮显示文本添加文章)。有没有办法做到这一点,但保持呈现相同的表单模板

<%= form_for @article do |f| %>

    <% if @article.errors.any? %>
        <div id="error_explanation">
            <h2>
                <%= pluralize(@article.errors.count, "error") %>
                prohibited this article from saving
            </h2>
            <ul>
                <% @article.errors.full_messages.each do |msg| %>
                    <li><%= msg %></li>
                <% end %>
            </ul>
        </div>
    <% end %>

    <p>
        <%= f.label :title %>
        <%= f.text_field :title %>
    </p>

    <p>
        <%= f.label :text %>
        <%= f.text_area :text %>
    </p>

    <p>
        <%= f.submit %>
    </p>

<% end %>

禁止保存此文章

这是ArticlesController:

class ArticlesController < ApplicationController

    http_basic_authenticate_with name: "username", password: "pass", except: [:index, :show]

    def index
        @article = Article.all
    end

    def show
        @article = Article.find(params[:id])
    end

    def new
        @article = Article.new
    end

    def edit
        @article = Article.find(params[:id])
    end

    def create
        @article = Article.new(article_params)

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

    def update
        @article = Article.find(params[:id])

        if @article.update(article_params)
            redirect_to @article
        else
            render 'edit'
        end
    end

    def destroy
        @article = Article.find(params[:id])
        @article.destroy

        redirect_to articles_path
    end

    private
        def article_params
            params.require(:article).permit(:title, :text)
        end

end
class-ArticlesController
定义一个助手方法来检查控制器和操作名称,然后根据需要返回按钮文本

e、 g

然后使用按钮中定义的帮助器方法

<%= f.submit button_text %>


此外,您还可以使用
controller\u name
action\u name
帮助程序获取Rails4中的控制器和操作名称。请参见定义帮助器方法以检查控制器和操作名称,然后根据需要返回按钮文本

e、 g

然后使用按钮中定义的帮助器方法

<%= f.submit button_text %>


此外,您还可以使用
controller\u name
action\u name
帮助程序获取Rails4中的控制器和操作名称。请参见

我知道如何命名按钮和提供类,但我想在按钮上显示不同的文本,用于不同控制器的操作(添加/编辑/显示)。如果我在f.submit上提供一个参数,它将显示在所有操作上。我知道如何命名按钮和提供类,但我想为不同控制器的操作(添加/编辑/显示)在按钮上显示不同的文本。如果我在f.submit上提供一个参数,它将显示在所有操作上。你能显示文章控制器吗?@rahusingh我发布了它。你能显示文章控制器吗?@rahusingh我发布了它。否它是一个帮助文件,ApplicationHelper是默认的帮助文件,当你运行rails new命令创建一个新的rails应用程序时生成。您可以在app/helpers folderno中找到它,它是一个helper文件,而ApplicationHelper是默认的helper文件,当您运行railsnew命令创建一个新的rails应用程序时会生成该文件。你可以在app/helpers文件夹中找到它
<%= f.submit button_id, class: "" %> 
module ApplicationHelper
  def button_text
    if controller.action_name == "new"
       return "Add"
    elsif controller.action_name == "edit"
       return "Update"
    else
       return "Submit"
    end
  end
end
<%= f.submit button_text %>