0

我一直在做一个 Rails 教程(在 lynda 上),我一直在研究一个简单的 cms。它有一个用于主题的控制器和模型,我可以使用 rails 控制台保存主题而不会出现问题。但是当我尝试使用网络表单创建一个新主题时,我收到了这个错误:The action '#<ActiveRecord::Relation:0x2166e28>' could not be found for SubjectsController. 主题模型有一个单一的关系 ( has_many: pages) 但这不应该影响这一点,因为网络表单没有保存任何外键。

new 和 create 的控制器方法如下所示:

def new
    @subject = Subject.new
end

def create
    #Instantiate a new object using form params
    @subject = Subject.new(params[:subject])

    #Save the object
    if @subject.save

        #If save succeds, redirect to list action
        redirect_to(action: list)
    else

        #If save fails, redisplay the form so user can fix problems
        render('new')
    end
end

重要的一点:控制器成功保存了新主题。它只是产生这个错误而不是重定向

Web 表单的视图如下所示:

<html>
    <%=  link_to("<< Back to List", {action:'list'}, class: 'back-link')%>

    <div class="subject new">
        <h2>Create Subject</h2>

        <%= form_for(:subject, url: {action: 'create'}) do |f|%>

        <table summary="Subject form fields">
            <tr>
                <th>Name</th>
                <td><%= f.text_field(:name) %></td>
            </tr>
            <tr>
                <th>Position</th>
                <td><%= f.text_field(:position) %></td>
            </tr>
            <tr>
                <th>Visible</th>
                <td><%= f.text_field(:visible) %></td>
            </tr>
        </table>

        <div class="form-buttons">
            <%= submit_tag("Create Subject") %>
        </div>
        <% end %>
    </div>
</html>
4

1 回答 1

1

您应该重定向到:list而不是list,或者更好

redirect_to(action: 'list')
于 2013-03-22T21:25:21.873 回答