- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
最近,我开始使用 Rubocop,并一直在尝试更好地思考我的代码,以及我是否可以写得更好。我有一个非常相似的创建和更新方法。 Rubocop 提示该方法的代码行太多 [12/10]。我想知道您将如何在这里遵循 DRY 原则。在我看来,应该将 respond_to 带到它自己的私有(private)方法中。但我不知道什么是最好的方法,因为:
我也不知道我是否应该让它一个人呆着。不过,它是如此多余的事实确实让我着迷。最终我想要最干净的代码,我只是不确定我是否应该 DRY 这个方法
def create
@category = Category.new(category_params)
respond_to do |format|
if @category.save
flash[:success] = 'Category Successfully Created'
format.html { redirect_to admin_category_path(@category) }
format.json { render :show, status: :created, location: @category }
else
flash[:danger] = 'Errors in creating category, see below'
format.html { render :new }
format.json { render json: @category.errors, status: :unprocessable_entity }
end
end
end
def update
@category = Category.find(params[:id])
respond_to do |format|
if @category.update(category_params)
flash[:success] = 'Category Successfully updated!'
format.html { redirect_to admin_category_path(@category) }
format.json { render :show, status: :created, location: @category }
else
flash[:danger] = 'Errors in updating category, missing information'
format.html { redirect_to action: 'edit', id: @category.id }
format.json { render json: @category.errors, status: :unprocessable_entity }
end
end
end
最佳答案
尝试从 create
和 update
中创建一个方法没有任何意义,因为它们服务于两个截然不同的目的。
相反,您可以考虑以下事项:
从 update
中删除 @category = Category.find(params[:id])
并将其移动到 before_action
中的方法>
before_action :find_category, only: [:edit, :update]
def find_category
@category = Category.find(params[:id])
end
最后但同样重要的是,Rubocop 并不总是有正确的答案:关注清晰度!
关于ruby-on-rails - 干燥这个 Ruby 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37396282/
我有几个链接和 div,我希望它们具有相同的功能。基本上,您单击一个链接/按钮/任何选择的触发器,相应的空间幻灯片就会打开。 标记看起来像... First Second Third 到目前为
我正在尝试使用数据提供程序对多个输入运行 Jasmine 测试。为此,我尝试使用以下链接使用 jasmine-data-provider 包: http://blog.jphpsf.com/2012/
我有一个脚本,可以将用户的输入传递到completed.html 页面上,但这里有两个问题: 所有用户输入都显示在地址栏上,我想隐藏它,但我不想使用 POST 方法,这会破坏我的 JS 脚本的用途。有
DRY(不要重复自己) 假设我在我的应用程序中经常使用此代码: observable$.pipe( tap(value => console.log(value)), map(value =>
这是我正在运行的 MySQL 查询: -- get the sid of every supplier who does not supply both a red and green part SE
下面的内容可以干一点吗? if(totals[label]) { totals[label] += increment; } else { totals[label] = increm
我有这个,而且效果很好: $(document).delegate("tr.updating input, tr.updating a, tr.updating label", 'click', fu
我有一个在程序中广泛使用的简单 C++ 结构。现在我希望将结构作为单个字段保存在 sqlite 数据库中(现在不是作为 blob)。 将struct的属性映射到数据库列有什么好的方法? 最佳答案 由于
在下面的测试中,Bar 和 Baz block 包含相同的规范。 首先撇开为什么需要这样的重复不谈,我想知道如何才能把它干掉。 我尝试将 block 转换为对象并在 Bar 和 Baz 下调用它们,但
很抱歉我的菜鸟问题,但我有一个适用于大型形式的特定领域的函数。我知道我可以对每个可能的字段进行硬编码,但我想让我的代码保持干燥。我可以做什么来将这种独特的功能添加到表单中的每个字段中。 (它们都共享一
我正在用 java 编写一个程序,它本质上测试了很多东西...... 对于每次调用,我都需要检查 NullPointerExceptions、StackOverflow、IndexOutOfBound
我有一个冗长的组件,它传递了许多 Prop 。有没有更干燥的方式将该组件传递给 child ? 谢谢。 let products; if (!this.state.loading) { produ
我有许多 Angular Controller ,其中包含以下代码块(包括一些我无法分解的更具体的内容)。 {{title}} 我希望以最符合 Angular 主义的方
我正在尝试使用 jasmine 测试一些 View 代码。我需要在 View 对象处于不同的包含状态时测试某些元素的存在,而不必在每个状态下重复大量代码。 我有 NodeView 类,它表示具有一些端
我真的很享受 Django 1.8 中 setUpTestData 和 --keepdb 带来的便利! 但是,我遇到了在多个测试文件中保持数据一致的问题。我想将我的 setUpTestData 类方法
EasyMock 测试似乎倾向于遵循以下模式: @Test public void testCreateHamburger() { // set up the expectation Easy
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我有一个重复比较,我必须检查三个变量是否等于某个变量。为简单起见,我将创建一个场景来说明我遇到的问题。 if time == -1 and day_of_week == -1 and month ==
我已经在 Spring listA 中进行了配置(见下文)。最好有另一个包含 listA 中的所有值并展开它的。 a b
我有一个函数当前正在 JavaScript 中使用 .getElementBy... DOM 调用。 var $ = function (selector) { var elements = []
我是一名优秀的程序员,十分优秀!