2012-08-06 49 views
0

我很努力与redign_to添加一个参数使用邪恶 我跟着Railscast并阅读github页面上的信息,但不能得到它的工作。 我想创建一个对象插件,保存后应该有可能添加东西。铁轨邪恶的宝石redirect_to与参数

这里是我的了:

plugins_controller:

def create 
    @plugin = Plugin.new(params[:plugin]) 
    if @plugin.save 
    redirect_to plugins_steps_path, :plugin_id => @plugin.id 
    end 
end 

plugins_steps控制器:

def show 
    @plugin = Plugin.find(params[:plugin_id]) 
    render_wizard 
end 

路线:

resources :plugins_steps 

我从来没有得到任何参数的笑在plugins_steps中的w方法是否有办法解决这个问题? 我也试了几种方法redirect_to的一样:

redirect_to :controller: "plugins_steps", :action => "show", :plugin_id => @plugin.id 

redirect_to({:plugin_id => @plugin.id }) 

非常感谢你。

回答

0

plugins_steps_path是索引操作的路径。如果您想要显示操作,请使用plugin_step_path(即步骤必须是单数)。运行rake routes来验证这一点。 此外,不要调用参数:plugin_id,只需使用:id并相应地更新您的show controller。

+0

Thx为您的回应。同时,我通过将插件对象放入会话中来解决它,以便在整个创建过程中访问它。但我不确定这是否是一种好方法? – Flo 2012-08-30 09:00:42

+2

不建议将数据存储在会话中,而不是id。这样,如果修改数据库表,会话将自动反映新的模式,而不是包含陈旧的信息。这也是一个安全风险,因为客户端可以访问会话并可以对其进行修改。我给你的解决方案使用标准的Rails方法来做你想做的事情,所以它确实是最好的解决方案。 – 2012-08-30 15:03:21

+0

非常感谢您向我解释,真的很感激。 – Flo 2012-08-31 05:26:16