2016-08-03 69 views
2

我有什么应该是一个相当简单的link_to情况:Rails的`edit_joke_path`链接到显示视图,而不是编辑视图

<% @jokes.each do |joke| %> 
    ... 
    <%= link_to edit_joke_path(joke) do %> 
    <span style="color: blue" class="glyphicon glyphicon-pencil" aria-hidden="true"></span><span style="color: blue">Edit Joke</span> 
    <% end %> 
    ... 
<% end %> 

然而,当我点击这个链接就带我到jokes#show页面不jokes#edit页面。这里是我的路线:

   jokes GET /jokes(.:format)    jokes#index 
        POST /jokes(.:format)    jokes#create 
      new_joke GET /jokes/new(.:format)   jokes#new 
      edit_joke GET /jokes/:id/edit(.:format)  jokes#edit 
       joke GET /jokes/:id(.:format)   jokes#show 
        PATCH /jokes/:id(.:format)   jokes#update 
        PUT /jokes/:id(.:format)   jokes#update 
        DELETE /jokes/:id(.:format)   jokes#destroy 

任何人都可以看到我要去哪里错了吗?这看起来很简单,但它不是它应该的方式。

附加信息

下面是从我的jokes_controller行动edit

def edit 
    @joke = Joke.find(params[:id]) 
    @joke.user = current_user 
    @joke.save 
    redirect_to joke_path 
    end 
+0

你的代码是当期的,提供'edit'动作代码'jokes_controller.rb' – hgsongra

+0

@hgsongra,都能跟得上。即使在重新启动后,它仍然会进入“show”页面。 – Liz

+0

我更新我的评论,请参阅并提供详细信息 – hgsongra

回答

1

按下面的代码。

因此,请在您的edit动作中删除或评论以下行,它将解决您的问题。

redirect_to joke_path 
+0

这将是很好的解释为什么纠正他的问题 – lcguida

+0

@icguida:看到更新的答案,现在可以吗? – hgsongra

+0

我的意思是说他不需要重定向,因为rails会将动作名称与视图匹配并自动呈现“编辑”视图。这就是为什么删除你提到的这一行解决了问题。 – lcguida

0

从你的行动中删除redirect_to joke_path。这是带你到显示页面。

1
edit_joke_path(joke) 

去笑话#编辑,但在您添加redirect_to的编辑机能的研究结束。从编辑功能中删除redirect_to。

redirect_to的:将浏览器重定向到目标jokes_controller.rb

def edit 
    @joke = Joke.find(params[:id]) 
    @joke.user = current_user 
    @joke.save 
    redirect_to joke_path 
    end 

redirect_to joke_path导致出现该问题指定

相关问题