如何在我的Rails应用程序视图中指定销毁路径助手?

时间:2014-09-25 20:14:08

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我的Rails应用程序中有一个模型类别。根据rails RESTful Routes,我可以对我的routes.rb中定义resources: categories的模型执行CRUD操作。

但是如何在我的视图中定义destroy path helper以执行DELETE操作,就像编辑记录edit_category_path(@category)一样。我试过这样的  destroy_category_path(@category)但是收到错误

undefined method `destroy_category_path' for #<#<Class:0x00000005371298>:0x000000053734f8>

2 个答案:

答案 0 :(得分:6)

路径与show动作('/categories/:id')完全相同,但您还需要指定DELETE HTTP method

button_to @category, method: :delete

请注意,使用具有破坏性/建设性操作的链接并不安全,因为机器人可能会访问这些链接。

答案 1 :(得分:0)

有一个用于删除的路径帮助程序,但是Rails默认未定义此路由。要激活帮助程序,您需要在route.rb文件中的资源丰富的路由中添加delete。

public class calculatorTest {

    @Test
    public void additionTest() throws MalformedURLException, InterruptedException {


        DesktopOptions option = new DesktopOptions();

        option.setApplicationPath("C:\\Windows\\System32\\calc.exe");

        WiniumDriver driver = new WiniumDriver(new URL("http://localhost:9999") , option);

        Thread.sleep(2000);

        driver.findElement(By.name("Seven")).click();
        driver.findElement(By.name("Plus")).click();
        driver.findElement(By.name("Eight")).click();
        driver.findElement(By.name("Equals")).click();
        String output =  driver.findElement(By.id("CalculatorResults")).getAttribute("Name");

        System.out.println("Result is " + output);
        assertEquals("Display is 15", output);

    }

    @Test
    public void subtractionTest() throws MalformedURLException, InterruptedException {


        DesktopOptions option = new DesktopOptions();

        option.setApplicationPath("C:\\Windows\\System32\\calc.exe");

        WiniumDriver driver = new WiniumDriver(new URL("http://localhost:9999") , option);

        Thread.sleep(2000);

        driver.findElement(By.name("Nine")).click();
        driver.findElement(By.name("Minus")).click();
        driver.findElement(By.name("Eight")).click();
        driver.findElement(By.name("Equals")).click();
        String output =  driver.findElement(By.id("CalculatorResults")).getAttribute("Name");

        System.out.println("Result is " + output);

    }

完成后,您应该可以使用resources :categories do member do get :delete end end

然后在类别中,您可以通过删除操作对对象进行销毁。